PHP转义字符被拉

时间:2012-09-13 21:30:33

标签: php encoding escaping

我有一个包含如下代码行的文件:

$var = "<link rel=\"stylesheet\" href=\"" . GLOBAL_PATH . "system/modules/" . $path . "/" . $css . "\" media=\"screen\">"

我打开它然后将其保存回服务器。当我使用fwrite()保存回服务器然后重新打开时,我得到了这个:

$var = "<link rel="stylesheet" href="" . GLOBAL_PATH . "system/modules/" . $path . "/" . $css . "" media="screen">"

...逃避引号的斜线消失了。

1 个答案:

答案 0 :(得分:1)

它们并没有“消失”,因为它们在技术上不在原始字符串中。考虑一下:

$str = "\"";
echo strlen($str); // 1, not 2!

... as $str字符串只存储一个符号(双引号),反斜杠用于防止它被误读为字符串文字的结尾。

虽然PHP能够神奇地恢复“丢失的”斜杠(使用magic_quotes_runtime指令),但它已在PHP 5.3中弃用,并且在5.4中已被删除

确实需要恢复时,替代方法是使用addslashes()功能。

$str = "\"";
echo addslashes($str); // \"