防止php从输出中删除反斜杠

时间:2011-12-13 05:40:39

标签: php javascript regex backslash

在我的网站上,我有一个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从输出中删除反斜杠?

1 个答案:

答案 0 :(得分:1)

您可以使用nowdoc-syntax(需要PHP 5.3.0):

$string = <<<'EOD'
var  escapeable = /["\\\x00-\x1f\x7f-\x9f]/g,
EOD;