<?php echo ($i % 6 == 5) ? 'style=\"margin-right:0px\"' : ''; ?>
我只是在视口上打印了style =“”。
更新 当我们在字符串中时,为什么没有必要转义双引号? 因为双引号永远不会被视为字符串,如果它们在单引号内?
提前致谢, MEM
答案 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=\"…\"
,则转义的双引号可能会导致您查看输出的环境中的语法无效。