php中的单引号、双引号和转义字符

5次阅读

PHP 单引号及双引号均可以修饰字符串类型的数据,如果修饰的字符串中含有变量(例 $name); 最大的区别是:双引号会替换变量的值,而单引号会把它当做字符串输出。例如:

$name="string";
echo " 字符串 " . '$name';
echo " 字符串 " . "$name";
?>
结果:
字符串 $name
字符串 string
转义字符,顾名思义会将规定的语法用 "\" 来输出。但语法规定在不同的系统中转义字符的作用不同,例如:windows 下的回车换行符用 "\r" 或 "\n",而 Linux 这两就有很大的区别:"\r" 光标回到行首,但还在本行; "\n" 表示下一行,不会回到行首。
PHP 中的转义字符有:
" \n" ==> 换行
"\r"==> 回车
"\t"==> 水平制表符
"\\"==> 反斜杠
"\$" ==> 美元符号
" \' "==> 单引号
" \" " ==> 双引号
" \[0-7]{1,3} " 正则表达式匹配一个八进制符号表示的字符
" \x[0-9A-Fa-f]{1,2} " 正则表达式匹配一个十六进制符号表示的字符
在 PHP 中,可以使用 echo() 和 print() 语句发送数据到 Web 浏览器,也可以使用它们发送 HTML 代码到 Web 浏览器。从技术上讲,echo() 和 print() 是语言构造,而不是函数,这里用了一对括号,从而有助于与变量以及 PHP 的其他部分区分开。这两个语句本质上没有什么区别,因此用那一个都不会产生任何问 题。这依个人习惯。它们不区分大小字。
在 PHP 中,理解单引号与双引号有什么区别是重要的。当所发送的数据中涉及到单引号和双引号时,在打印双引号时使用单引号,反之亦然,如:
echo 'She said,"How are you?"';
print "I'm just ducky.";
或者,通过在有问题的字符前面放置一个反斜杠,对它进行转义:
echo "She said,\"How are you?\" ";
print 'I\'m just ducky.';
在 PHP 中,封闭在单引号内的值将照字面意义进行处理,而封闭在双引号内的值则将被解释。换句话说,把变量和特殊字符 (见表 1) 放在双引号内将导致打印出它们所表示的值,而不是它们的字面值。如:
$var = 'test';
代码 echo "var is equal to $var"; 将打印出 var is equal to test,而代码 echo 'var is equal to $var'; 将打印出 var is equal to $var。使用一个转义的美元符号,代码 echo"\$var is equal to $var"; 将打印出 $var is equal to test,而代码 echo '\$var is equal to $var'; 将打印出 \$var is equal to $var。
表 1 当在双引号内使用这些字符时,它们具有特殊的含义
转义字符代码 转义字符的含义
\ " 双引号
\ ' 单引号
\ \ 反斜杠
\ n 换行符
\ r 回车符
\ t 制表符
\ $ 美元符号
正如以上例子所说明的,双引号将用变量的值 (test) 代替它的名称 ($var),并用特殊字符表示的值($) 代替 它的代码 (\$)。单引号总是准确地打印你输入的内容,除了转义的单引号(\') 和转义的反斜杠 (\\) 之外,它们将分别被打印为一个单引号和一个反斜 杠。
提示:
1、由于 PHP 将试图找出那些需要将其值插入到双引号内的变量,所以从理论上讲,使用单引号要快一些。但是,如果需要打印一个变量的值,则必须使用双引号。
2、因为有效的 HTML 常常包括许多用双引号括住的属性,所以当利用 PHP 打印 HTML 时,使用单引号最容易。
echo '
如果想使用双引号打印出上面这段 HTML 代码,将不得不对字符串中的所有双引号进行转义,所以相对来说较麻烦。

正文完