• ベストアンサー

特定の漢字に\マークが入っています。

初心者です。よろしくお願い致します。 簡易な掲示板を自分で作っているのですが、 特定の漢字 「表」「予」「申」「能」「十」などを入力すると\が隣についてしまいます。 自分なりにしらべ addslashes(strip_tags(stripcslashes(文字))) として渡しているのですが直りません。 もし、お分かりになる方がいましたら是非教えてください。よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • php504
  • ベストアンサー率42% (926/2160)
回答No.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)
回答No.3

フォームからのSJIS入力の場合、PHPがデフォルトで自動的に\でエスケープしてしまう文字があります。 DBに格納する場合はそのまま格納し、画面表示時にstripslashesをかませば\は取れます。

noname#21216
noname#21216
回答No.2

あっ もしかして postでもらったデータなら php.ini の postの処理の変更で たぶん直ります? http://jp.php.net/manual/ja/ref.mbstring.php#ini.mbstring.encoding-translation ;; HTTP入力エンコーディング変換を有効にする mbstring.encoding_translation = On をoffにしてみてください。

melll
質問者

お礼

ありがとうございます。 php.iniを変更してみましたが、直りませんでした。 postで受け取ったデータをmysqlへ入れているのですが、mysql_escape_stringを使っても\がはいってしまいます。

noname#21216
noname#21216
回答No.1

 phpが 卵だから。  将来のバァージョンでなおるかもしれませんね・・・ http://oshiete1.goo.ne.jp/kotaeru.php3?q=1693906

melll
質問者

お礼

ご返信ありがとうございます。 shift-jisを使っている場合は\を取り除く事は不可能って事でしょうか・・・

関連するQ&A