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); } }