フォームメールを使用した際に¥マークが付く場合がある。
http://oshiete.goo.ne.jp/qa/1230191.html
こんにちは。
メールフォームかた取得したデータに何故か\マークが付属する場合があります。(例ソラ→ソ\ラ)他のサーバーで同じ物を試してみても何もならないので、サーバー側の問題なのかなぁ~とか思っているのですが、サーバーは何も出来ないとのことなので、正規表現で\マークを削除しようかと思います。
現在メールフォームからのデータを取得する際に
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モード用に変えないといけないのでしょうか???すみませんが、ご教授の程をよろしくお願いします。
POSTされたデータがエスケープシーケンス(\が付加)されているのは、PHPの設定でmagic_quotes_gpcがOnになっているからです。
.htaccessが使えるなら、php_flag magic_quotes_gpc Offと記述すれば、エスケープシーケンス(\が付加)されません。
magic_quotes_gpcが原因で¥マークが付くのでphp.iniまたは.htaccessでOffに変更すれば¥マークが付かなくなる。
.htaccess等が使用できないときは、フォーム内容を受け取るPHPの最初の方で、
// magic_quotes_gpc = On の場合の対策 if (get_magic_quotes_gpc()) { function strip_magic_quotes_slashes($arr) { return is_array($arr) ? array_map('strip_magic_quotes_slashes', $arr) : stripslashes($arr); } $_GET = strip_magic_quotes_slashes($_GET); $_POST = strip_magic_quotes_slashes($_POST); $_REQUEST = strip_magic_quotes_slashes($_REQUEST); $_COOKIE = strip_magic_quotes_slashes($_COOKIE); }
http://pentan.info/php/magic_quotes_on.html
このような処理を入れると¥マークが付かなくなる。
最近のサーバーはmagic_quotes_gpcが基本Offなので、あまり気にしなくなったけど・・・
日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)