<?php echo ($i % 6 == 5) ? 'style=\"margin-right:0px\"' : ''; ?>
我只是在视口上打印了 style="" 。
更新: 当我们在字符串中时,为什么不需要转义双引号?因为双引号永远不会被视为字符串,如果它们在单引号内?
提前致谢, MEM
<?php echo ($i % 6 == 5) ? 'style=\"margin-right:0px\"' : ''; ?>
我只是在视口上打印了 style="" 。
更新: 当我们在字符串中时,为什么不需要转义双引号?因为双引号永远不会被视为字符串,如果它们在单引号内?
提前致谢, MEM
当我们在字符串中时,为什么不需要转义双引号?因为双引号永远不会被视为字符串,如果它们在单引号内?
手册,关于单引号字符串:
要指定文字单引号,请使用反斜杠 (\) 对其进行转义。要指定文字反斜杠,请将其加倍 (\\)。所有其他反斜杠实例将被视为文字反斜杠:这意味着您可能习惯的其他转义序列,例如 \r 或 \n,将按指定的字面输出而不是具有任何特殊含义。
'
您对该字符串使用了单引号,因此"
不需要在字符串中转义双引号。将其替换为'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 不需要扫描字符串来转义任何内容,它只需要找到字符串的结尾。但是,如果您确实需要解析字符串中的内容,请确保使用双引号。
无需在单引号内转义双引号。
<?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=\"…\"
,则转义的双引号可能会在您查看输出的环境中导致语法无效。