0

次のようなコード行を含むファイルがあります。

$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">"

...引用符をエスケープするスラッシュがなくなったところ。

4

1 に答える 1

1

技術的には元の文字列にはなかったので、それらは「なくなった」わけではありません。このことを考慮:

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

...$str文字列には 1 つの記号 (二重引用符) のみが格納されるため、文字列リテラルの末尾として誤解されるのを防ぐためにバックスラッシュが使用されます。

PHP は「失われた」スラッシュを (magic_quotes_runtimeディレクティブを使用して) 魔法のように復元できますが、PHP 5.3 で廃止され、5.4で削除されました。

代替手段は、実際にそれらを復元する必要がある場合に、 addslashes()関数を使用することです。

$str = "\"";
echo addslashes($str); // \"
于 2012-09-13T21:34:44.513 に答える