• ベストアンサー

phpのpreg_replaceで、Unknown modifier

phpのpreg_replaceで、Unknown modifier '[' in ... というエラーが出ます 何が考えられるでしょうか。。。 意味不明でしたら加筆修正しますのでよろしくお願いします。

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

  • ベストアンサー
  • Hohenheim
  • ベストアンサー率18% (43/237)
回答No.2

正規表現パターンは '/..../' のように '/' で囲んでありますか? また、パターン中に '/' がある場合、'\/' のようにエスケープしていますか? ご確認ください。

kimidora
質問者

お礼

ご回答ありがとうございます。 すみません、自己解決いたしました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

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

デリミタの問題だと思いますが、エラーがでる具体的なパターンを提示しないと 意味がわからないですね

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • preg_replaceについて

    こんにちは。 PHPのプログラミングで、preg_replaceを使用したいのですが、(どのようなものかはわかっています)使用方法がわかりません。 某スクリプトを見てみたところ、 (:\/\/\S+?) や、 (.*?) など、わけの分からないものがたくさん出てきました。 どこのサイトを見ても、まったくわからなかったので、 わかる方、詳しくご教授くだされば幸いです。

    • ベストアンサー
    • PHP
  • preg_replaceがうまくいきません

    何度見なおしても原因がわからないので、どなたかご指摘よろしくお願いいたします。 <?php $urs='母親からのプレゼント'; preg_replace('/母親/m','父親',$urs); echo $urs; ?> replace表現が間違っているとは思えませんし、どこがおかしいのでしょうか。

    • ベストアンサー
    • PHP
  • phpのpreg_replaceで質問です

    お世話になります phpのpreg_replaceで質問です 下記の様な記述にて文字列の置換をしています $body = preg_replace("/cid:(\d{2,})@(\d{6}).(\d{6})/","/bl/id/$1/",$text); コレを改良してcidの次に入る値で処理を分けたいのですが、うまくいきません。 どなたかご教授お願い致します $arr = array("gif","jpg"."png"); $body = preg_replace("/cid:(\d{2,})@(\d{6}).(\d{6})/","/bl/id/$1/$arr[$1]",$text); 宜しくお願い致します

    • ベストアンサー
    • PHP
  • preg_replaceにおけるeオプション

    文字列$strは、「aa:bb」という文字列を含み、$flagが1のときは、この部分を「aa」に。0のときは「bb」に置き換えるという処理で、 $str = preg_replace("/(.*):(.*)/e","($flag) ? $1 : $2", $str); とするも、うまくできません。 http://www.jp.u4ia.net/~tkyng/php/php_manual_i18n/function.preg-replace.html こちらのサイトの一番下にe修飾の使い方がのっているのですが、これを真似てもうまくいきません。 e修飾の使い方を教えてください。

    • ベストアンサー
    • PHP
  • PHP preg_replace のリンク作成

    PHPで作成している掲示板にて、 本文中の「>>5」を押すと、A_id=10&B_id=3 のメッセージを表示する機能を作っています。 10が「A_id」となります。 イメージ:http://XXXX.jp/show.php?A_id=10&B_id=3 $str = preg_replace('/^>>([0-9]+)/','<a href="show.php?A_id=\\1&B_id=★">\\0</a>',$str); A_id=\\1 には10など数字が設定できてます。 B_id=の★部分に、3などの数値を「変数」で設定することができません。 ($B_id_num など) どのようにすればよいのでしょうか?

    • ベストアンサー
    • PHP
  • preg_replaceを使って特定の文字を削除したいと思っています。

    preg_replaceを使って特定の文字を削除したいと思っています。 具体的には $name = "青木太郎(男)"; の(男)の部分を取り除いて $name = "青木太郎"; にしたいのですが正規表現が分からないためうまくいきません。 preg_replace("/(*)/", "", $name); などとしてみたのですがエラーになってしまいます。 括弧から括弧までの文字を丸ごと削除するにはどのようにしたらいいでしょうか。 文字コードはUTF-8です。

    • ベストアンサー
    • PHP
  • str_replaceとpreg_replace

    phpで、汎用環境で文字化けしそうな文字を,ad hoc に機種依存しない文字に置換する過程に関して質問させて頂きます。 例えば(株)を(株)に、置換等です。 宜しくお願いいたします。 こちらのページのコードで、 http://memo.xight.org/2006-06-19-13 もともと、以下のようなコードサンプルA(推測)が、 -----▼サンプルA $arr=array('\xE3\x8A\x91' => '(株)',………); foreach ($arr as $key => $val) {  $str_rep = preg_replace("/$key/", $val, $str_rep); } -----▲ こちらの方の指摘で、 http://blog.poyo.jp/archives.php/categ-1/year-2006/month-6/id-1150817399 -----▼サンプルB $arr=array('\xE3\x8A\x91' => '(株)',………); return str_replace( array_keys( $arr), array_values( $arr), $str); -----▲ コードサンプルBに、変更(改善?)されたようです。一見、なるほどと思うのですが、実際にサーバ上で試したところコードサンプルAは問題なく機能しますが、コードサンプルBは機能しません。(特殊文字にマッチしない) 私の環境の問題で機能しないだけなのか、サンプルBを提示していた方の早まりなのか、判断がつかずに困っています。 ただし、'\xE3\x8A\x91'のようなユニコード文字列を、(株)といった文字に打ち変えて実行すると、きちんと認識して、置換が行われます。 str_replaceとpreg_replaceの機能の違いによるものだと思ったのですが、今回、このコードを利用し、80,000件位のコメントに置換をかけようとしているため、少しでも早く軽く置換できる方法を探しております。 見た目的にはループで走査していくよりも、str_replaceでスパっと置換した方が早そうに感じるので、できるならばサンプルBのような書き方で置換する様をベンチマークしたいと考えております。 なぜ、コードサンプルBが機能しないのか、また、正常に機能させるためには何が必要なのか、アドバイス・ご教示頂けましたら幸いです。 ちなみにコードサンプルAの元は、以下かと思いますが、こちらはまったく問題なく機能することが確認できています。 http://www.happytrap.jp/blogs/2009/09/11/1393/

    • ベストアンサー
    • PHP
  • PHP5.3以降のereg_replaceについて

    PHP5.3以降にアップデートしたところ、ereg_replaceで書かれている箇所で警告が出るようになりました。 マニュアルを見た限りではpreg_replaceへの移行が推奨されているようなので、preg_replaceに書き換えようと思い、http://melma.com/backnumber_129036_1571788/を参考に、2つ目のパラメータの前後に/を付けましたが、画面に何も表示されず、どのように記述すれば良いか分からなかった為、アドバイスいただける方がいらっしゃいましたら、ご教示の程よろしくお願いします。 なお、ソースは下記となります。 また、記述はhttp://okwave.jp/qa/q849820.html?&status=true&errcode=&msg=&qid=849820を使用させていただいており、やりたいことはURLに自動的にハイパーリンクを付加したいという状況で、ereg_replaceを使用すればできております。 <?php $proto = "私のブログはhttp://www.hoge.com/です。"; $proto = ereg_replace("(https?|ftp|news)(://[[:alnum:]\+\$\;\?\.%,!#~*/:@&=_-]+)","<a href=\"\\1\\2\" target=\"_blank\">\\1\\2</a>",$proto); //$proto = preg_replace("(https?|ftp|news)(://[[:alnum:]\+\$\;\?\.%,!#~*/:@&=_-]+)","/<a href=\"\\1\\2\" target=\"_blank\">\\1\\2</a>/",$proto); print $proto; ?> 以上、宜しくお願いします。

    • ベストアンサー
    • PHP
  • preg_replace 英数字以外の文字の前後のスペースを削除

    preg_replaceで 英数字の前後いずれかのスペースは残して それ以外のスペースを消したいのですが あ a間が消えてしまいます。(英数字前なので消さない) a aはのこるので英数字後のスペースは残せてます。 <?php $str = \"あ a a\"; $txt = preg_replace(\"/([^a-zA-Z\\d])\\s+/u\", \"$1\", $str); echo $txt;

    • ベストアンサー
    • PHP
  • preg_matchでエラーが出ます。

    「PHP Warning: preg_match() expects parameter 2 to be string, array given in~」というエラーが出てきて困っています。 該当する行は下記です。 if( preg_match("/http:\/\/aa.com\//" , $url ) ) 真ならば上手く行くのですが、違うアドレスだった場合、エラーが出ます。 当方PHP初心者ですが、助言をお願いします。

    • ベストアンサー
    • PHP