序列 | 含义 |
---|---|
\n | 换行(LF 或 ASCII 字符 0×0A(10)) |
\r | 回车(CR 或 ASCII 字符 0×0D(13)) |
\t | 水平制表符(HT 或 ASCII 字符 0×09(9)) |
\\ | 反斜线 |
\$ | 美元符号 |
\” | 双引号 |
\[0-7]{1,3} | 此正则表达式序列匹配一个用八进制符号表示的字符 |
\x[0-9A-Fa-f]{1,2} | 此正则表达式序列匹配一个用十六进制符号表示的字符 |
此外,和单引号一样,如果试图转义任何其它字符,反斜线本身也会被显示出来!在 PHP 5.1.1 之前,\{$var} 中的反斜线不会被显示出来。
双引号中要出现双引号必须用\”
双引号更为强大的功能是其中的变量名可以被变量值替换!
如果遇到美元符号($),解析器会尽可能多地取得后面的字符以组成一个合法的变量名。如果想明示指定名字的结束,用花括号把变量名括起来。
以下是PHP代码:【复制代码】 $beer = 'Heineken';
echo "$beer's taste is great"; // 工作,? $beer被替换成Heineken,双引号里可以出现单引号
echo "He drank some $beers"; // 工作,但是没有$beers这个变量,所以$beers被替换成空
echo "He drank some ${beer}s"; //工作
echo "He drank some {$beer}s"; // 工作
echo "<a href=\"http://www.bnet.cm.cn\" target=\"_blank\" title=\"商业英才网\">BNET</a>"; //有很多双引号,这时用定界符就比较方便了 同样也可以解析数组索引或者对象属性。对于数组索引,右方括号(])标志着索引的结束。
以下是PHP代码:【复制代码】 error_reporting(E_ALL);
$fruits = array('strawberry' => 'red', 'banana' => 'yellow');
//工作,但是banana首先是被当做一个常量,当没有定义这个常量是以字符串看待,所以,这种方式存在隐患
echo "A banana is $fruits[banana]";
// 工作,这是数组标准的写法,推荐
echo "A banana is {$fruits['banana']}.";
// 不工作,这是必须用{}括起来
echo "A banana is $fruits['banana'].";
// 工作
echo "This square is $square->width meters broad.";
//变量替换可以将很多语法化简,例如:
echo "我的名字是" . $name . ",你的呢?"; 定界符(HERE文档)
另一种给字符串定界的方法使用定界符语法(”<<<”)。应该在 <<< 之后提供一个标识符,然后是字符串,然后是同样的标识符结束字符串。
结束标识符必须从行的第一列开始。同样,标识符也必须遵循 PHP 中其它任何标签的命名规则:只能包含字母数字下划线,而且必须以下划线或非数字字符开始。
例如:
以下是PHP代码:【复制代码】 $outstr = <<<EOF
这里可以有单引号和双引号和同于双引号的转义序列
'
"
\n
\\
EOF; 定界符优与双引号的一点就是可以包含双引号和单引号。
很重要的一点必须指出,结束标识符所在的行不能包含任何其它字符,可能除了一个分号(;)之外。这尤其意味着该标识符不能被缩进,而且在分号之前和之后都不能有任何空格或制表符。同样重要的是要意识到在结束标识符之前的第一个字符必须是你的操作系统中定义的换行符。例如在 Macintosh 系统中是 \r。
如果破坏了这条规则使得结束标识符不”干净”,则它不会被视为结束标识符,PHP 将继续寻找下去。如果在这种情况下找不到合适的结束标识符,将会导致一个在脚本最后一行出现的语法错误。
不能用定界符语法初始化类成员。用其它字符串语法替代。
定界符文本表现的就和双引号字符串一样,只是没有双引号。这意味着在定界符文本中不需要转义引号,不过仍然可以用以上列出来的转义代码。变量会被展开,但当在定界符文本中表达复杂变量时和字符串一样同样也要注意。