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

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

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

提前致谢, MEM

4

3 回答 3

3

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

手册,关于单引号字符串:

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

于 2010-11-28T04:24:52.740 回答
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 不需要扫描字符串来转义任何内容,它只需要找到字符串的结尾。但是,如果您确实需要解析字符串中的内容,请确保使用双引号。

于 2010-11-28T04:18:12.910 回答
2

无需在单引号内转义双引号。

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

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

$foo = 'a'b';

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

$foo = 'a\'b';

这被正确地解析为 string a'b。您已经摆脱了引用通常在这一点上的含义。

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

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

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

于 2010-11-28T04:19:14.497 回答