PHP基本连接问题?

时间:2010-11-28 04:16:15

标签: php quotes double-quotes

<?php echo ($i % 6 == 5) ? 'style=\"margin-right:0px\"' : ''; ?>

我只是在视口上打印了style =“”。

更新 当我们在字符串中时,为什么没有必要转义双引号? 因为双引号永远不会被视为字符串,如果它们在单引号内?

提前致谢, MEM

3 个答案:

答案 0 :(得分:3)

  

当我们在字符串中时,为什么没有必要转义双引号?因为双引号永远不会被视为字符串,如果它们在单引号内?

manual,关于单引号字符串:

  

要指定文字单引号,请使用反斜杠(\)对其进行转义。要指定文字反斜杠,请将其加倍(\\)。 反斜杠的所有其他实例都将被视为文字反斜杠:这意味着您可能习惯使用的其他转义序列(如\ r或\ n)将按指定字面输出,而不是任何特殊的意义。

答案 1 :(得分:2)

您对该字符串使用了单引号',因此不需要在字符串中转义双引号"。将其替换为'style="margin-right:0px"',它应该可以正常工作。

要解释PHP如何更好地处理字符串和引号,了解'"之间的区别会很有帮助。用'封装的字符串始终按原样显示。字符串中的任何内容都不会被解析,包括任何转义字符(例如换行符或转义引号的\n,但转义单引号\'除外)。相反,解析了"中封装的字符串,因此如果您有任何转义字符,它们将正确显示,如果字符串中有任何变量,也会输入它们。例如,

// Set name variable to my name
$name = "nhinkle";

// Echo hello name with single quotes
echo 'hello {$name}';
// The result will be "hello {$name}"

// Echo hello name with double quotes
echo "hello {$name}";
// The result will be "hello nhinkle"

使用单引号需要较少的处理能力,因为PHP不需要扫描字符串以逃避任何事情,它只需要找到字符串的结尾。但是,如果您确实需要解析字符串中的内容,请确保使用双引号。

答案 2 :(得分:2)

没有必要在单引号内转义双引号。

<?php echo ($i % 6 == 5) ? 'style="margin-right:0px"' : ''; ?>

您只需要在单引号内转义单引号或在双引号内转义双引号。如果要在单个带引号的字符串中编写单引号,则该单引号将终止该字符串。

$foo = 'a'b';

PHP将此视为字符串a,后跟无意义的b以及永远不会终止的字符串';的开头;这是无效的语法。

$foo = 'a\'b';

这被正确解析为字符串a'b。您已经转义了此时引号通常具有的含义

单引号内有双引号,没有这种歧义。单引号字符串中的双引号不会终止字符串,它没有那种需要转义的特殊含义。如果包含反斜杠,则按字面意思使用反斜杠。

$foo = 'a"b';  // a"b
$foo = 'a\"b'; // a\"b

我想问题是你如何看待输出。如果输出为style=\"…\",则转义的双引号可能会导致您查看输出的环境中的语法无效。