HTML ドキュメントをより簡単に作成できるアプリを作成しようとしています。
ファイルに書き込むときにバックスラッシュが追加されることを除いて、ほとんど機能します。
<a href=\"google.com\">google</a>
これを止める方法はありますか?
私はそれを働かせました!ファイルに書き込む前に stripslashes() を実行すると、\ なしでファイルが保存/作成されます。
これはおそらくマジック クォートがオンになっているためです。ストリップスラッシュを毎回使用したくない場合は、php.ini ファイルまたは htaccess ファイルで次のように無効にする必要があります。
php.iniファイル内:
magic_quotes_gpc = Off
magic_quotes_runtime = Off
magic_quotes_sybase = Off
または.htaccessファイル内:
php_flag magic_quotes_gpc Off
または、コードで直接無効にします。
if (get_magic_quotes_gpc()) {
$process = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST);
while (list($key, $val) = each($process)) {
foreach ($val as $k => $v) {
unset($process[$key][$k]);
if (is_array($v)) {
$process[$key][stripslashes($k)] = $v;
$process[] = &$process[$key][stripslashes($k)];
} else {
$process[$key][stripslashes($k)] = stripslashes($v);
}
}
}
unset($process);
}
ソース: http://php.net/manual/en/security.magicquotes.disabling.php
単一引用符で囲まれた文字列を使用している場合は、文字どおりに解釈されるため、バックスラッシュを含むエスケープ二重引用符を使用しないでください。
ドキュメントから:
注: 二重引用符やヒアドキュメントの構文とは異なり、変数や特殊文字のエスケープ シーケンスは、単一引用符で囲まれた文字列内にある場合は展開されません。
この動作は、PHP の非推奨のMagic Quotesディレクティブが原因で発生します。5.4 より前のデフォルトの PHP インストールではデフォルトで、あなたのディレクティブはまだアクティブになっています。length 引数を指定しない限り、fwriteはmagic-quotes-runtimeを調べて、エスケープするかどうかを確認します。
それをオフにするには、配置できます
php_flag magic_quotes_gpc Off
.htaccessファイルでは、このオプションを許可するために apache DSO を使用する必要があります
またはphp.iniで無効にすることができます
共有ホストを使用しているなどの理由でこれらのいずれも実行できない場合は、コードで解決してください。
function write($resource,$string,$length)
if (get_magic_quotes_gpc()) {
$string = stripslashes($string);
}
return fwrite($resource, $string,$length);
}