• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:mb_ereg_replaceに関して)

mb_ereg_replaceに関するエラー

racciの回答

  • racci
  • ベストアンサー率64% (9/14)
回答No.1

mb_convert_encoding は動くけれど、mb_ereg_replace は「Call to undefined function」になるんですよね。 phpinfo を表示して、 Multibyte (japanese) regex support enabled のようになっているか調べてみてください。

sadacha
質問者

お礼

racci様 はじめまして、こんばんは。早速のお返事に感謝いたします。 で、早速借りているサーバーのphpinfoを調べてみたところ、 mbstringの項目は、以下の3つのみの表示しかありませんでした・・。 開発環境では、racci様の仰る通りになっていたのですが・・。 Multibyte Support enabled Multibyte string engine libmbfl HTTP input encoding translation enabled ちなみに、このレンタルサーバにあるphpinfoでは、表示が開発環境と若干違い、はじめの項目にあるConfigure Command の中に 、 '--enable-zend-multibyte' '--with-pear' '--prefix=/usr/local' 'i386-portbld-freebsd6.1' という表示がありましたが、これも起因されていることなのでしょうか?勉強不足ではありますが、急を要しているため是非とも貴重なアドバイスを頂きたく思っております。お忙しい中恐縮ですが、引き続きご指導いただければ幸いに思います。

関連するQ&A

  • 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
  • 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
  • 配列を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
  • mb_eregについて

    初歩的な質問かもしれませんが、 DB内の1つのカラムに 「a1,a3,a5,a7,a9」という値が格納されてる時、 if(ereg("a9",$str)){ echo "ok"; } という「ereg」を使った条件式でしたら、正常に値が返るのですが、 if(mb_ereg("a9",$str)){ echo "ok"; } と、「mb_ereg」を使用した時には 「Call to undefined function: mb_ereg()」 というエラーが返ってくるのですが これは何が原因なのか、お分かりになる方はいらっしゃいますでしょうか?

    • ベストアンサー
    • PHP
  • ereg 処理で行き詰ってます

    mb_eregでの処理がどうもうまくいかず、助言していただければ幸いです。 $ageに10代や20代といった変数が入っています。 if(mb_ereg('0代$',$age)){ $age = mb_ereg_replace('0代$',"?",$age); } という感じで語末を1?や2?に変更したいのですが、うまく動いてくれません。 また、eregでの処理なのですが下記のように if(!ereg('[0-9\?]',$FORM[age])){ Error_Msg("入力された年齢の書式が間違っています"); } if(ereg('\?$',$FORM[age])){ $FORM[age] = ereg_replace('\?$',"0代",$FORM[age]); } としているのですが、20代や30代と直接入力した場合でもError処理されず通ってしまいます。 0~9、?以外の文字が入力された場合にError処理させるにはどうすればいいでしょうか?

    • 締切済み
    • PHP
  • メールの内容が文字化けします・・・

    <? function sendmail($to,$from,$from_name,$title,$message){ /* EUCコードへのエンコーディング */ $to = mb_convert_encoding($to , "EUC-JP","EUC-JP,UTF-8,SHIFT-JIS,ASCII,JIS"); $from = mb_convert_encoding($from , "EUC-JP","EUC-JP,UTF-8,SHIFT-JIS,ASCII,JIS"); $title = mb_convert_encoding($title , "EUC-JP","EUC-JP,UTF-8,SHIFT-JIS,ASCII,JIS"); $message = mb_convert_encoding($message , "EUC-JP","EUC-JP,UTF-8,SHIFT-JIS,ASCII,JIS"); /* 改行コード変換(CR+LFへ変換) */ $to = ereg_replace("\r", "", $to); $to = ereg_replace("\n", "\r\n", $to); $from = ereg_replace("\r", "", $from); $from = ereg_replace("\n", "\r\n", $from); $from_name = ereg_replace("\r", "", $from_name); $from_name = ereg_replace("\n", "\r\n", $from_name); $title = ereg_replace("\r", "", $title); $title = ereg_replace("\n", "\r\n", $title); $message = ereg_replace("\r", "", $message); $message = ereg_replace("\n", "\r\n", $message); /* メールヘッダ生成 */ $header = "From: ".$from_name." <".$from.">\n"; $header .= "Reply-To: ".$from_name." <".$from.">\n"; /* メール本文生成 */ $message = mb_convert_kana($message,"KV"); /* 送信メッセージ言語設定 */ mb_language("Japanese"); /* メール送信処理 */ $rcd = mb_send_mail($to,$title,$message,$header); return $rcd; } ?> 何が原因か分からないのです・・・。 教えていただければ嬉しいですm(__)m

    • ベストアンサー
    • PHP
  • mb_eregを使っての文字列検索、抽出について

    パターン="関数.+ます。" 上記パターンで、"関数"から"ます。"までを含む文字列を抽出する事は出来ました。が、 一番最初に出てくる"ます。"で検索をストップし、変数$matchに代入する事はできますか? (指定したキーワード"関数"以降の全ての"ます。"が変数に代入されてしまいます、最初に出てくる"ます。"まで抽出できれば充分なので。) キーワードやアドバイスがあればお教え下さい。 宜しくお願いします。 以下のプログラムで実行しました。 <?php //mb_eregについて $url="http://jp2.php.net/mb_ereg"; //アドレス指定 $result=file_get_contents($url);//取得 $text_contents=strip_tags($result);//タグを外す $sjis_text=mb_convert_encoding($text_contents,"SJIS","auto");//sjisに変換 echo("$sjis_text<br>");//本文出力 echo("----------------------------------------------<br>"); if(mb_ereg("関数.+ます。",$sjis_text,$match))//"関数"から"ます。"まで検索 echo("$match[0]<br>");//検索結果表示 ?>

    • ベストアンサー
    • PHP
  • 全角の”’¥を半角に変換したい

    PHPを勉強し始めた超初心者です。よろしくお願いいたします。 表題のとおり、PHPにて全角の”’¥を半角の"'\に変換したいのですが、うまくできません。 ----- A ----- $s = "”’¥"; mb_convert_kana( $s, "as" ); 結果:全て全角のまま。 ----- B ----- $s = "”’¥"; $s = mb_ereg_replace( '”', '"', $s ); $s = mb_ereg_replace( '’', '\'', $s ); $s = mb_ereg_replace( '¥', '\\', $s ); 結果:”’は半角になるんですが、¥は半角になりません。 なにか根本的に間違いがあるんでしょうか? あともう一つ、日本語環境について、 mb_language( "Japanese" ); mb_internal_encoding( "EUC-JP" ); mb_regex_encoding( "EUC-JP" ); mb_substitute_character( "none" ); mb_detect_order( "SJIS,EUC-JP,JIS,UTF-8,ASCII" ); と、ソースに指定しているのですが、ローカル環境がWindowsなので、ソースそのものはSJISになっていると思います。(コード体系管理できないテキストエディタ使用) しかしこれをそのままサーバーにアップしても、問題なく(文字化け等無く)print"サシスセソラリルレロ"; なども表示されるんですが、これはこれでいいんでしょうか? 以上、よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • php5.3.3でeregをループ内で使用すると

    php5.3.3でeregをループ内で使用すると動作がとまり、エラーログにも何も出力されません。 10回目のループでなぜか動作がとまるようです。 $mail=""; $fp=fopen("php://stdin", "r"); while(!feof($fp)) $mail.=fread($fp, 10240); fclose($fp); $MailArray = explode("\n", $mail); $Counter = 0; $InputCheck = new InputCheck(); for ($i = 0; $i < count($MailArray); $i++){ if (strpos($MailArray[$i], "From: ") === 0){ $From = str_replace("From: ", "", $MailArray[$i]); $From = ereg_replace(">.*$", "", $From); $From = ereg_replace("^.*<", "", $From); $From = ereg_replace("\r", NULL, $From); if(!$InputCheck->isRightEMail($From)){ $i++; $From = str_replace("From: ", "", $MailArray[$i]); $From = ereg_replace(">.*$", "", $From); $From = ereg_replace("^.*<", "", $From); $From = ereg_replace("\r", NULL, $From); } } else if (strpos($MailArray[$i], "To: ") === 0){ $To = str_replace("To: ", "", $MailArray[$i]); $To = ereg_replace(">.*$", "", $To); $To = ereg_replace("^.*<", "", $To); $To = ereg_replace("\r", NULL, $To); if(!$InputCheck->isRightEMail($To)){ $i++; $To = str_replace("To: ", "", $MailArray[$i]); $To = ereg_replace(">.*$", "", $To); $To = ereg_replace("^.*<", "", $To); $To = ereg_replace("\r", NULL, $To); } } } 上記は空メールされたfromとtoを取得するものです。 eregをpregに変えれば問題なく動作します。 5.3以降からeregは非推奨になりましたが、使用することはできるようですが、ループ内で使用するとなぜか動作がそこでストップします。 非推奨の関数を使用すると動作が止まりエラーログにも出力されないことはよくあるのでしょうか? エラーログに出力されなかったため原因を特定するのに苦労しました。 eregなどの非推奨関数を使用した場合の不具合に関してご教示頂けると幸いです。 宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • mb_convert_variables関数が見つからない。

    mb_convert_variables関数が見つからない。 環境:PHP Version 5.2.13 ネットからPHPテンプレートクラスライブラリをDLして組み込み開発をしているのですが、 mb_convert_variables()のところでエラーが出てしまいます。 内容は、   Fatal error: Call to undefined function mb_convert_variables() というものです。 PHPマニュアルで確認したらPHP5でも使用可能なようです。 何かiniファイルの設定が必要なのでしょうか? 宜しくお願いいたします。

    • ベストアンサー
    • PHP