1、最普通的格式,用双引号或单引号引用起来的字符,比如
$str="我是双引号包起来的字符串"; 或 $str='我是单引号包起来的字符串';
要问二者有什么区别,在于双引号包起来的字符串可以不需要连接符而直接插入变量,而单引号不会对字符串内的变量格式做处理,所以如果要定义拼接变量的字符串,用单引号会更快一些。
值得注意的是,经过手动测试,如果定义纯粹字符串,不拼接不包含变量的话,用双引号倒是效率高那么一点点。
2、双引号包起来的字符串内可以直接插入变量,比如直接在要插入变量的位置写入变量名或者用大括号把变量名包起来,
$str1="第一个字符串变量的内容是:$str,就这么多。";输出的时候$str会被替换成对应变量的值。
补充:如果用“文字{$str}文字”的方式内嵌变量名,则变量名是你所预期指定的,而如果用“文字$str文字”来内嵌变量名,此时变量会被处理成“$str文字”,而不是你所预期的“$str”。之所以如此,是因为没有明确用大括号指明变量的时候,PHP自动处理变量名的时候,是采用的单词分词字符作为界限的,这里一定要注意。分词字符一般是空格标点符号等。
3、如果不使用直接插入变量的方法定义字符串,可以用点号连接多个字符串,比如
$str1='第一个字符串变量的内容是:'.$str.',就这么多。';
4、如果遇到需要多行书写的字符串怎么办,比如我们要定义一段JS脚本,当然如果把脚本写在一行里是没问题的,但是如果脚本比较长一些,而且其中会出现很多转义符号的话,脚本最终成型的话,很有可能成了一锅黏粥了。不但格式上不好阅读,而且一旦出问题要修改的话,也会很罗嗦。那么有没有办法可以把字符串直接定义成多行,并且引号之类的需要转义的字符可以直接输出呢?答案是肯定的,PHP早就预料到这种需求了。我们可以这么定义一段多行字符串:
$str=<<
'ok',"hello"
I will
{$str1}
STR;
其中三个小于号代表多行字符串的输入,STR是字符串界定符,界定符的名字可以自己定义,两个界定符之间的内容就是多行字符串。其中的单引号双引号可以直接输出而不必转义,当然里面也可以直接插入变量,输出是会自动替换变量值的。
5、外加一个小技巧,当使用 echo进行字符串输出时,如果字符串使用拼接方式组成,可以使用逗号来连接需要拼接的各部分字符串和变量,比如
echo 'first',"second",$str,"end";
据说这样输出速度要快一些,原因在于echo可以接受多个参数,并直接按顺序输出,实际上逗号不是拼接字符串,而是把不同字符串和变量作为参数传送给echo命令。