フォームメールに¥マークが入るときの修正方法

フォームメールを使用した際に¥マークが付く場合がある。

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なので、あまり気にしなくなったけど・・・

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)