こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

\マークの正規表現

こんにちは。
メールフォームかた取得したデータに何故か\マークが付属する場合があります。(例ソラ→ソ\ラ)他のサーバーで同じ物を試してみても何もならないので、サーバー側の問題なのかなぁ~とか思っているのですが、サーバーは何も出来ないとのことなので、正規表現で\マークを削除しようかと思います。
現在メールフォームからのデータを取得する際に
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モード用に変えないといけないのでしょうか???すみませんが、ご教授の程をよろしくお願いします。

投稿日時 - 2005-02-21 17:17:00

QNo.1230191

困ってます

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

追加です。
.htaccessが使えない場合は、エスケープシーケンスをはずすstripslashesと云う関数があります。

foreach($_POST as $key => $val){
$sy[$i] = stripslashes($val);
$i++;
}

投稿日時 - 2005-02-21 19:15:22

お礼

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

投稿日時 - 2005-02-22 16:43:22

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.3

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

投稿日時 - 2005-02-21 19:06:57

ANo.2

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

投稿日時 - 2005-02-21 18:40:39

お礼

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

投稿日時 - 2005-02-22 16:42:05

ANo.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%

投稿日時 - 2005-02-21 18:13:18

お礼

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

投稿日時 - 2005-02-22 16:29:09

あなたにオススメの質問