PHP把单引号中的数据视为普通字符串,不再处理。
而双引号还要对其中的字符串进行处理,比如遇到$了会把其后的内容视为变量。即:单引号里面的 $变量名 不被替换。 双引号里面的 $变量名 会被替换。例如:$name = 'hello'; echo "the $name"; 会输出 the hello 而如果是单引号$name = 'hello'; echo 'the $name'; 会输出 the $name定义字符串时,只有一种引号被视为定义符,即单引号或双引号。于是,如果一个字符串由双引号开始,那么只有双引号被分析器解析。这样,你就可以在双引号串中包含任何其他字符,甚至单引号。下面的引号串都是合法的:
$s = "I am a 'single quote string' inside a double quote string";
$s = 'I am a "double quote string" inside a single quote string';下面的句子是不合法的:
$str="Why doesn't "this" work?";
因为在字符串的开头和结尾是双引号,所以里面不能再直接写双引号,如果要在里面显示双引号,则必须通过使用转义字符将字符串中的引号作为字符串的一部分。但是在里面显示单引号,那可以随便写。
就会被解析成一下三部分:
- "Why doesn't "——包含一个单引号的双引号串
- this——多余的字符,分析器无法处理
- " work?" ——普通字符串
那么我们怎么解决这个问题呢?可以通过使用转义字符将字符串中的引号作为字符串的一部分。正确的表示方法是这样:
$str= "Why doesn't \"this\" work?"