• ベストアンサー

\マークの正規表現

こんにちは。 メールフォームかた取得したデータに何故か\マークが付属する場合があります。(例ソラ→ソ\ラ)他のサーバーで同じ物を試してみても何もならないので、サーバー側の問題なのかなぁ~とか思っているのですが、サーバーは何も出来ないとのことなので、正規表現で\マークを削除しようかと思います。 現在メールフォームからのデータを取得する際に foreach($_POST as $key => $val){ $sy[$i] = mb_ereg_replace("\\","\\1\\2", $val); $i++; } としています。 実行すると Fatal error: Call to undefined function: mb_ereg_replace() とエラーメッセージが出ます。 \マークの正規表現の仕方が間違えているのでしょうか? CGIモードの動作とサーバーのページには書いていたのですが、何処かCGIモード用に変えないといけないのでしょうか???すみませんが、ご教授の程をよろしくお願いします。

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

  • ベストアンサー
回答No.4

追加です。 .htaccessが使えない場合は、エスケープシーケンスをはずすstripslashesと云う関数があります。 foreach($_POST as $key => $val){ $sy[$i] = stripslashes($val); $i++; }

amountainblast
質問者

お礼

ありがとうございます。 .htaccessは使えないので, stripslashesを使用したら、希望通りに動きました。 たすかりました。 ありがとうございました。

その他の回答 (3)

回答No.3

エラーメッセージはmb_ereg_replace()という関数はありませんよと云っています。 マルチバイト文字列関数(mbstring)は拡張モジュールですが、そのサーバにインストールされていないようです。 POSTされたデータがエスケープシーケンス(\が付加)されているのは、PHPの設定でmagic_quotes_gpcがOnになっているからです。 .htaccessが使えるなら、php_flag magic_quotes_gpc Offと記述すれば、エスケープシーケンス(\が付加)されません。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

>undefined function は、その関数が利用できませんということです。 php.iniでmb関連の設定はしておられますか

amountainblast
質問者

お礼

phpinfo() で確認したところ mbstringが全てno valueになっています。 やっぱり使えないんですかね・・・。 ereg_replaceでメールアドレスなどで置換をするといけますから・・・ php.iniはいらうことができないので、今回は諦めます。 何か違う方法を探してみます。 ありがとうございました。

  • tkfm
  • ベストアンサー率36% (27/73)
回答No.1

\を削除するだけですよね? ・元データの表を読み取るようなcgiを作りたいのでしょうか? ・$_POSTで他にreplaceしたいものを定義しているのでしょうか? mb_ereg_replaceの使い型をよく理解されたほうが良いと思います.>参考URL

参考URL:
http://pukiwiki.ishinao.net/?%A4%CF%A4%C6%A4%CA%A5%C0%A5%A4%A5%A2%A5%EA%A1%BC%C5%AA%A5%AD%A1%BC%A5%EF%A1%BC%A5%C9%A5%EA%
amountainblast
質問者

お礼

ありがとうございます。 確かにmb_ereg_replaceの使い方をほとんどわかっていないので、勉強します・・・。

関連するQ&A