• ベストアンサー
  • 暇なときにでも

php 正規表現で、\マークを取り除くには?

php で ereg_replace関数を使って¥マークを取り除きたいのですが、 ereg_replace("\\", "",$str); と記述すると Warning: ereg_replace() [function.ereg-replace]: REG_EESCAPE in C:\xampp... とエラーになってしまいます。 どうすれば正規表現により円マークを取り除くことができるのでしょうか?

共感・応援の気持ちを伝えよう!

  • 回答数2
  • 閲覧数2857
  • ありがとう数2

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

  • ベストアンサー
  • 回答No.1
  • yambejp
  • ベストアンサー率51% (3827/7415)

<? $str='\\test'; print $str; $str=ereg_replace('\\\\', '',$str); print $str; ?> で、いけますが、ereg_replaceは遅いという理由で推奨されていません。 また、そもそもズバリ\マークを削除するだけなら、正規表現を 使うこと自体お勧めできません。str_replace()をご利用ください <? $str='\\test'; print $str; $str=str_replace('\\', '',$str); print $str; ?> なお、shiftjisを使っているようであれば5c問題がありますので 要注意です

共感・感謝の気持ちを伝えよう!

質問者からのお礼

回答ありがとうございます。 たしかに、shiftjisの環境なのでダメ文字が化けまくりです。 utf8にコンバートします。

関連するQ&A

  • PHPの正規表現について

    // URLエンコード $str =~ s/([^\w ])/'%' . unpack('H2', $1)/eg; $str =~ tr/ /+/; これをPHPの関数を使った方法と使わなかった方法が知りたいです。 また、正規表現で、ereg.., preg.., mb_eregがありますが、この違いの詳細が知りたいです。

    • ベストアンサー
    • PHP
  • \マークの正規表現

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

    • ベストアンサー
    • PHP
  • PHP 正規表現

    はじめまして^^ 現在、PHPでプログラムを作っています。 そして、文字列の置き換えをする機会があり、 正規表現をつかうことになりました!! 置き換えに使う関数は、mb_ereg_replaceです! ある条件にあった部分の文字列を置き換えしたいと思っています。 そして、いろいろとやっていきましたら、あるひとつの壁にぶつかりました。。 例えば、PHPでは、正規表現の部分を [^文字]とやると、『文』と『字』という文字列以外にマッチという意味になるらしいのですが、 『文字』という文字列以外にマッチ、というふうに、表現したい場合は、 どう表現すればよいのですか? [^(文字)]とか、その他いろいろ、 自分なりに、色々ためしたのですが、うんともすんともいいません、、 どなたか、わかる方教えて下さいm(_ _)m

    • ベストアンサー
    • PHP

その他の回答 (1)

  • 回答No.2
  • php504
  • ベストアンサー率42% (926/2160)

ひょっとしてエスケープされた文字列を元に戻したいのでは それなら $str = stripslashes( $str ); が使えます。 違ったら無視してください。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

回答ありがとうございます。 まさに、今の処理がその関数がピッタリです。

関連するQ&A

  • 正規表現を表示させたい

    今正規表現をしているのですが、どうやってブラウザーで表示できるのでしょうか?わかっている人にとってはめちゃくちゃくだらないことだと思うのですが、よろしくお願いします。下記のコードです。 <?php $str = "There is no pen . I want a pencil . "; ereg_replace("pen(cil)?", "pencil", $str ); ?>

    • ベストアンサー
    • PHP
  • Python上での正規表現でどのように書けば?

    PHPで作ったプログラムをGAE(Google App Engine)/Python で作り替えています。 PHPの置換処理で、たとえば、以下の正規表現をPythonで書きたいのですが、どのようにすればいいでしょうか? mb_ereg_replace("無([いかきくけこ])","な\\1",$str); この質問は、別の言い方をすると次のようにもなります。 「Pythonで以下をひとつの正規表現で表現したい」 str = re.sub('無い','ない',str) str = re.sub('無か','なか',str) str = re.sub('無き','なき',str) str = re.sub('無く','なく',str) str = re.sub('無け','なけ',str) str = re.sub('無こ','なこ',str) どなたか、お分かりになる方、教えて頂ければと思います。

  • 正規表現

    正規表現に疎いので質問させてください。 $param = ereg_replace('/?$', '', $_SERVER['REQUEST_URI']); これをpreg_matchで書くとどうなりますか? よろしくお願い致します。

    • 締切済み
    • PHP
  • 正規表現での置換えについて

    正規表現を使った置換えでどうやったらいいのか悩んでいます。 やり方は、カンマで区切られた数字や英字の列をその先頭だけ残して別の記号(?など)に変換するというものです。 変換例 222,1,33333 は 2??,1,3???? へ置換え 55,22aa は 5?,2??? へ置換え 6 は 6 へ置換え(つまりそのまま) このような置換えをすることは可能でしょうか。 こういう置換えはand条件が使えないと無理なのかなとも思ったりしています。 ただ正規表現にはand条件は無いようですし。(or条件はあるようですが) mb_ereg_replaceを使って明示していただけると助かります。 もちろん複数行になっても問題ありませんし、mb_ereg_replaceでは無理という場合に別の関数を使っていただいても結構です。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • 正規表現について

    phpの初心者です。 あるサンプルのプログラムを読んで勉強していたのですが、正規表現の使い方がよく解らず本やサイトで調べましたが、それでも解らなく。 下記の場合ですと同様な結果になるのでしょうか? ereg("(.*)#(.+)",$aa,$bb) また、正規表現に詳しいサイトがあればご紹介頂けますか? 本当に申し訳ありません。

    • ベストアンサー
    • PHP
  • 正規表現について

    変数の文字列を範囲指定して削除しようとしています。 正規表現を使って範囲指定したいのですが、うまくいきません。 <span class="shimei"> ~ </span> というのは正規表現でどのように書くのでしょうか? $name = mb_ereg_replace("<span class=\"shimei\">.*</span>","",$name); これはどこが間違っているのでしょうか?

    • ベストアンサー
    • PHP
  • PHPでの正規表現

    PHPでの正規表現に関する質問です。 function makeAk($value){ return preg_replace("/(?<![一-龠+ぁ-ん+ァ-ヴ+a-zA-Z0-9'\"#@=:;])@([一-龠+ぁ-ん+ァ-ヴ+a-zA-Z0-9_]{1,15})/u", "@<a href=\"mypage.php/\\1\">\\1</a>", $value); } 上記のコードでmypage.phpに\\1ではなく、パラメーター(?id=$post['id']のような)を振りたいのですが、 どうしたらうまくいきますでしょうか。 よろしくお願いします。

    • 締切済み
    • PHP
  • 正規表現について

    すみませんが、教えてください。 PHP+MYSQLで掲示板のようなサイトを作っています。 投稿したコメントの中にURLがある場合、次の変換で、リンクを設定するようにしています。 $str = ereg_replace("(https?|ftp|news)(://[[:alnum:]\+\$\;\?\.%,!#~*/:@&=_-]+)", "<a href=\"\\1\\2\" target=\"_blank\">\\1\\2</a>", $aStr); さらに、次のことがしたいのですが、どうすれば良いのか教えてください。 (1)URLが長い場合、表示する文字列を指定文字数でカットする。 (2)URLのみをリンク設定付で切り出す。 当方、正規表現がほとんど理解できていません。 (オイラリーの本を買ったのですが、時間がなくて学習できていません。) 申し訳ございませんが、こうすれば良いというコードを教えていただければ、幸いです。

    • ベストアンサー
    • PHP
  • 0P PHP 正規表現 perlとの違い

    php(PHP5)の正規表現に関する演算子についての質問です。 一つ目の質問 ある特定の1文字が指定した文字列の中に含まれるかどうか調べたいのですが、perlでは「m/a/」のような演算子を使っていました。ですが、PHPでは「m/a/」は使えないようです。PHPでは、どのように記述すればよいのでしょうか? 例 $string = "abcdefg" とし、$stringに「d」が含まれるかどうか調べたい。 ちなみに「stristr」を使用してstristr($string, "d")などとすると, 「d」が$stringに含まれない場合、falseを返してくれるのは良いのですが、含まれる場合、trueではなく文字列の中から一致した検索文字以降を返すのでだめでした(私がどうやるか知らないだけかも)。 2たつ目の質問 また、ある特定の文字の前と後に不特定の一文字又は複数の文字が含まれるかどうか調べたいのですが、以下のような正規表現では、だめでした。 $string ereg(".+@.+",$string) 上記の正規表現の場合、$stringの文字列が「@」一文字だけで「@」の前と後に何の文字もなくてもtrueを返してしまいます(本当は@マークの前後に最低1文字以上の文字列がなければだめなようにしたいのです。)。 どのようにすれば、良いのでしょう? ご存知の方がおられましたら、お教え下さい。 キャサリン

    • ベストアンサー
    • PHP
  • PHP 正規表現

    閲覧ありがとうございます。 PHPでDBから持ってきたテキストの中に"#"が30回以上続いたらそこで折り返すというプログラムを作成しています。 「#が30回以上続いたら」という条件がうまくいきません。 ereg関数の返り値には何も入っていませんでした。 どこがわるいのでしょうか? //以下ソースです。 $Foo = "##############################################################################"; if (!ereg("[:punct:]{30,}",$Foo) == FALSE) { $Foo = str_split($Foo,30); }

    • ベストアンサー
    • PHP