- ベストアンサー
特定の漢字に\マークが入っています。
初心者です。よろしくお願い致します。 簡易な掲示板を自分で作っているのですが、 特定の漢字 「表」「予」「申」「能」「十」などを入力すると\が隣についてしまいます。 自分なりにしらべ addslashes(strip_tags(stripcslashes(文字))) として渡しているのですが直りません。 もし、お分かりになる方がいましたら是非教えてください。よろしくお願い致します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
php.iniにmagic_quotes_gpcという項目があります。 これがOnになっているとGET,POST,COOKIEから取得された文字列に\があった場合、自動的に\\に変換されます。 ShiftJISの漢字には2バイト目に\をもつ漢字があり(ご指摘の表などです)これにも\が付け加えられることになります。 対処法としてはphp.iniのmagic_quotes_gpc = Offにするかスクリプトで $_POST['str'] = stripslashes($_POST['str']); のようにして\\を\に戻してやります。
その他の回答 (3)
- gentaro
- ベストアンサー率47% (105/221)
フォームからのSJIS入力の場合、PHPがデフォルトで自動的に\でエスケープしてしまう文字があります。 DBに格納する場合はそのまま格納し、画面表示時にstripslashesをかませば\は取れます。
あっ もしかして postでもらったデータなら php.ini の postの処理の変更で たぶん直ります? http://jp.php.net/manual/ja/ref.mbstring.php#ini.mbstring.encoding-translation ;; HTTP入力エンコーディング変換を有効にする mbstring.encoding_translation = On をoffにしてみてください。
phpが 卵だから。 将来のバァージョンでなおるかもしれませんね・・・ http://oshiete1.goo.ne.jp/kotaeru.php3?q=1693906
お礼
ご返信ありがとうございます。 shift-jisを使っている場合は\を取り除く事は不可能って事でしょうか・・・
お礼
ありがとうございます。 php.iniを変更してみましたが、直りませんでした。 postで受け取ったデータをmysqlへ入れているのですが、mysql_escape_stringを使っても\がはいってしまいます。