• ベストアンサー

配列をmb_ereg_replaceで一気に置き換えるには?

お世話になります。 mb_ereg_replace関数を使い文字の置き換えを行っているのですが、置き換 えるものが多く、1回で置き換えられないかと思い、質問をさせて頂き ます。 // 検索文配列 $search = array("__tome__", "__hame__", "__hoge__"); // 置き換え文配列 $replace = array("$tome", "$hame", "$__hoge__"); // 置き換え $str = mb_ereg_replace($search, $replace, $str1); とやると Warning: mb_ereg_replace() expects parameter 2 to be string, array given in on line というエラーが出てしまい、うまく置き換える事が出来ません。どのようにすればうまく置き換えられるでしょうか? ご教授のほどよろしくお願いします。

  • PHP
  • 回答数2
  • ありがとう数1

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

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

たんにstr_replaceをつかいます $str = str_replace($search, $replace, $str1);

その他の回答 (1)

  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.2

string mb_ereg_replace(string, string, string) とあります。 str_replace, preg_replaceなら(mixed, mixed, mixed) です。 UTF-8なら /$pattern/u で日本語も可です。

関連するQ&A

  • mb_ereg_replaceについて

    マルチバイトでの置き換えについて質問です。現在は以下のように str_replaceで置き換えしており文字化けはないのですがマルチバイト 対応のmb_ereg_replaceで実行したほうがいい事を知りました。 以下現在のソースです。 // 検索文配列 $search = array("{#aaa#}", "{#bbb#}", "{#ccc#}"); // 置き換え文配列 $replace = array("あああ", "いいい", "ううう"); // 置き換え $str = str_replace($search, $replace, $str); 単純にstr_replaceをmb_ereg_replaceにしてみたのですがエラーに なってしまいました。 置き換えしたい文字が複数あるのでできれば検索文字、置き換え文字を 配列として使用したいのですがどうすればいいのでしょうか? ちなみにですが文字コードはutf-8です。

    • ベストアンサー
    • PHP
  • preg_replace ereg_replace

    いつもお世話になっております。 データを抽出する前にサニタイズが必要となり、 実行する処理で、 $rep = "/\\\/"; $arr = array('data1' => 'A', 'data2' => '\\\\\\'); $ret = preg_replace($rep , "\\\\\\" ,$arr ); $ret = ereg_replace("'", "\'" ,$ret); preg_replaceは配列で戻ってくる事は知っているのですが、 ereg_replaceは配列で戻ってくるのでしょうか。 お手数ですが、宜しくお願い致します。

    • ベストアンサー
    • PHP
  • mb_ereg_replaceに関して

    こんにちは。お世話になっております。 開発時(PHP5.1.4)では何ら問題なかったものが、レンタルサーバー上(PHP5.0.4)へアップロードしたら、mb_ereg_replace関数の部分でエラーが出て対処に困っております。 エラー文 Call to undefined function mb_ereg_replace() $key = $_GET['key']; $key = addslashes($key); $key = mb_convert_encoding($key, 'EUC-JP', 'auto'); $key = mb_ereg_replace(" ", " ", $key);//ココでエラー $arr = explode(" ",$key); 上記は実際のソースの一部ですが、GETで渡された文字列(検索キーワード、key=○○)をDB(MySQL)に登録のあるデータを検索する。といった結果を願い設置しております。 借りたサーバ(共有)は、(適切な言葉じゃないかも知れませんが)PHPはCGIのもと動かしているようですが、これも原因の一つなのでしょうか? お忙しいなか恐縮ですが、ご指導のほど宜しくお願い申し上げます。

    • ベストアンサー
    • PHP
  • mb_ereg_replace での文字変換

    PHPでフリーの掲示板を制作中です。 目立たせようとする記号を削除しましたがうまく動きません。 $html = mb_ereg_replace('△', '', 'あああ△あああ'); ・希望結果 ああああああ ・実際の結果 ああ 文字コードは全て EUC-JP です。 また以下を追加するとエラーがでました。 $str="あああ△あああ"; $str = mb_convert_encoding($str, 'EUC-JP', 'auto'); ・エラー Warning: mb_convert_encoding() [function.mb-convert-encoding]: Unable to detect character encoding in そもそもmb_convert_encodingを使わない方が良いのか使い方が悪いのかも解りませんがアドバイスお願いします。

    • ベストアンサー
    • PHP
  • ereg_replaceの文字化け

    すみませんが、どなたか教えて下さい。 漢字をひらがなにしたいと思い、 SJISファイルの以下のソースで、 mb_internal_encoding('SJIS'); mb_regex_encoding('SJIS'); $str = "除かれた"; echo ereg_replace("除[かきくけこ]","のぞ",$str); 結果を「のぞかれた」となるようにしたいのですが、 上記だと、「のぞゥれた」となってしまいます。 どうすれば直せるか分かる方はいらっしゃるでしょうか?

    • ベストアンサー
    • 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
  • ereg_replaceの文字化けについて

    宜しくお願いします。 PHPで文字列の置き換えをする関数の『ereg_replace』についてですが、この関数を使う変数に『'』がはいると、置き換え後にその『'』の前に『\』が付いちゃうんですが、これを回避する方法は無いでしょうか?ちなみに、文字化けするソースを明記させて頂きます。 $title_edit = ereg_replace("/\x0D\x0A|\x0D|\x0A/","<br>","${title}"); 入力フォームでtextareaで入力された項目が$titleに入るのですが、textarea内でエンター改行した場合に、その改行コードをHTML上の<BR>タグに置き換えるというものなんですが、これを行うと、『'』の前に『\』が入ってしまうのです。原因が良く判らないで困っています。 お願いします!教えて下さい!!

    • ベストアンサー
    • PHP
  • 連想配列からpreg_replaceで効率よく

    下記のような処理って結構、効率悪い書き方かなと思っていますが、連想配列としてstr_replaceするにはどのようにすればよいのでしょうか? また、同じような関数で strtr > str_replace > preg_replace の順で処理が早いようなサイトを見ましたが、皆さんはどれを使っていますか?お勧めな方法やアドバイスを下さい。 $moji01 = "<リンゴ>"; $moji02 = "<バナナ>"; $moji03 = "<イチゴ>"; $moji04 = "<メロン>"; $moji05 = "<スイカ>"; 一部処理は省略してます。 $html = file_get_contents($temp); $html = str_replace( "<りんご>", $moji01, $html); $html = str_replace( "<ばなな>", $moji02, $html); $html = str_replace( "<いちご>", $moji03, $html); $html = str_replace( "<めろん>", $moji04, $html); $html = str_replace( "<すいか>", $moji05, $html); echo "$html";

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

    お世話になります。 ereg_replace で書いた正規表現による置換処理を、 preg_replace に置き換えようとしています。 (preg_replaceの方が処理が速いとマニュアルにあったので) ところが、preg_replaceでの正規表現検索がうまくいかないで困っています。 基本的には、ereg_replaceの正規表現部分を//で囲んでいるだけです。 具体的には、下記のような処理を書いています。 間違いがあれば、ご指摘いただけましたら幸いです。 //### うまくいっている ereg_replace のパターン ここから ### $html=file_get_contents('template/temple.html'); //ひな形読み込み $search='\{dokuji tag\}.+\{_dokuji tag\}'; $replace=''; $html=ereg_replace($search,$replace,$html); //不要部分の削除 //### うまくいっている ereg_replace のパターン ここまで ### ↓ //### うまくいかない preg_replace のパターン ここから ### $html=file_get_contents('template/temple.html'); //ひな形読み込み $search='/\{dokuji tag\}.+\{_dokuji tag\}/m'; $replace=''; $html=preg_replace($search,$replace,$html); //不要部分の削除 //### うまくいかない preg_replace のパターン ここまで ### //### 置き換えるソース('template/temple.html') ここから ### <!-- {dokuji tag} --> <tr> <td nowrap><strong>タイトル:</strong></td> <td> <input type="text" name="name" size="80" value="{name}" /> </td> </tr> <!-- {_dokuji tag} --> //### 置き換えるソース('template/temple.html') ここまで ### よろしくお願い申し上げます。

    • ベストアンサー
    • PHP
  • php 正規表現で、\マークを取り除くには?

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

    • ベストアンサー
    • PHP

専門家に質問してみよう