在我的网站上,我有一个PHP脚本,它接受多个源文件(HTML,CSS和javascript),优化它们,将它们嵌入到页面中,并缓存它们(基本上编译我的网站)。最近,我添加了jquery-json(一个用于将JSON编码为字符串的jQuery插件),但部分代码包含多个斜杠(用于某种正则表达式):
var escapeable = /["\\\x00-\x1f\x7f-\x9f]/g,
当我前面提到的脚本处理这一行时,会删除一个反斜杠并导致:
var escapeable = /["\\x00-\x1f\x7f-\x9f]/g,
另外,我已经设置了一个简短的脚本,以确保问题不是由PHP脚本处理javascript的方式引起的,并且事实上它是PHP输出方式的问题它:
<?php
$string = 'var escapeable = /["\\\x00-\x1f\x7f-\x9f]/g,';
echo($string); //this outputs: var escapeable = /["\\x00-\x1f\x7f-\x9f]/g,
?>
正如您在评论中看到的那样,问题在简单的脚本中也是一样的......
我不确定这是否相关,但我已经检查确保魔法引号已关闭。此外,我知道'escapeable'拼写错误,但这就是它在jquery-json源代码中的方式。
那么,如何阻止PHP从输出中删除反斜杠?
答案 0 :(得分:1)
您可以使用nowdoc-syntax(需要PHP 5.3.0):
$string = <<<'EOD'
var escapeable = /["\\\x00-\x1f\x7f-\x9f]/g,
EOD;