我有一个包含如下代码行的文件:
$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">"
...逃避引号的斜线消失了。
答案 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); // \"