0

HTML ドキュメントをより簡単に作成できるアプリを作成しようとしています。

ファイルに書き込むときにバックスラッシュが追加されることを除いて、ほとんど機能します。

<a href=\"google.com\">google</a>

これを止める方法はありますか?

私はそれを働かせました!ファイルに書き込む前に stripslashes() を実行すると、\ なしでファイルが保存/作成されます。

4

4 に答える 4

2

これはおそらくマジック クォートがオンになっているためです。ストリップスラッシュを毎回使用したくない場合は、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

于 2012-06-19T19:31:44.660 に答える
1

単一引用符で囲まれた文字列を使用している場合は、文字どおりに解釈されるため、バックスラッシュを含むエスケープ二重引用符を使用しないでください。

ドキュメントから:

注: 二重引用符やヒアドキュメントの構文とは異なり、変数や特殊文字のエスケープ シーケンスは、単一引用符で囲まれた文字列内にある場合は展開されません。

于 2012-06-19T19:29:06.157 に答える
1

この動作は、PHP の非推奨のMagic Quotesディレクティブが原因で発生します。5.4 より前のデフォルトの PHP インストールではデフォルトで、あなたのディレクティブはまだアクティブになっています。length 引数を指定しない限り、fwritemagic-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);
}
于 2012-06-19T19:37:04.420 に答える