magic_quotes_gpc

お問い合わせフォームで文字化け。カタカナの「ソ」が「ソ\」となって、カタカナのみの入力がエラーになるというもの。なんか前にもやった気がするけどいろいろ探したら、SJISでmagic_quotes_gpcがonになってると「表」「予」「申」「能」「十」「ソ」などが同じように\がついてしまう。以下のページに詳しく載ってる。
CGIで特定の文字(表・予・申・能など)が文字化けする
共有サーバーだったので、.htaccessではPHPの設定をいじれない。いろいろ探すとphp.iniがあったのでその中を修正して、magic_quotes_gpcをoffにした。apache再起動しなきゃとか思ってたんだけど、phpinfo()で確認してみるともう設定が変わってる。んでテストしてみると直ってた。


magic_quotes_gpc onでphpの設定が直せないときはstripslashesをすればいいらしい。でも配列は扱えないので配列の時は再帰処理が必要。一応考えてみた。間違ってたらごめんなさい。

function recursiveStripslashes(&$str)
{
    if (is_array($str)) {
        foreach ($str as $key => $val) {
            $str[$key] = recursiveStripslashes($val);
        }
    } else {
        return stripslashes($str);
    }
}