• ベストアンサー

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()」 というエラーが返ってくるのですが これは何が原因なのか、お分かりになる方はいらっしゃいますでしょうか?

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

  • ベストアンサー
  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

> 「Call to undefined function: mb_ereg()」 「mb_eregという存在しない関数を呼び出しました。」とあるね。 「そんなこと無い、ちゃんとマニュアルにもその関数は書かれてるもん!」と思うだろう。確かにPHPのリファレンスにこの関数はかかれている。 原因は、mb_stringというPHP拡張モジュールが存在しない事にある。 PHP拡張モジュールが存在しない理由は次の2つ。 1.PHPがそもそもマルチバイトサポートでコンパイルされていない。 2.php.iniの中でmb_string拡張モジュールを読み込んでいない。 君がそのサイトの管理者であれば、phpそのものの設定を調べて修正すべし。そうでないならば管理者にお願いしよう。

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

関連するQ&A

  • 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

    if(mb_ereg('■', $order->products[$i]['attributes'][$j]['value'])) { echo '<span style="color:#ff0000;"><div style="font-size:27px;">【<b>',A配送,'</b>】</div></span>'; } elseif (mb_ereg('659', $order->products[$i]['orders_ahead_id'])) { echo '<span style="color:#ff0000;"><div style="font-size:27px;">【<b>',B配送,'</b>】</div></span>'; } else { echo ''; } 上記の様なA配送とB配送両方に当てはまる条件の場合はC配送と言うのを足したいのですが 書き方が分かりません。

    • 締切済み
    • 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
  • 【PHP】ereg() で文字種判定するときエラーになる

    PHP5使用者です。 ereg() でよくわからないエラーに直面して悩んでおります。 例えば、サンプル文字列が半角数字a~z又は -(ハイフン)のみで構成されているか調べたい場合、以下の方法を試しました。 1)if( ereg("^[\-a-z]+$", $str )){ 2)if( ereg("^[a-z-]+$", $str )){ 3)if( mb_ereg("^[\-a-z]+$", $str )){ 4)if( preg_match("/^[\-a-z]+$/", $str )){ 但し $str はシングルバイト文字です 結果、1)のみエラーになります。-をエスケープしているのになぜでしょうか? 文字コードはShift_JIS、EUC-JP、UTF-8とも試しましたが同じでした。そもそも常にマルチバイト関数を使うべきとか…? 解説していただける方、よろしくお願いいたします。

    • 締切済み
    • PHP
  • ereg_replaceの文字化け

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

    • ベストアンサー
    • PHP
  • 半角¥を全角¥に変換するために

    <?PHP mb_language('ja'); mb_internal_encoding('utf-8'); $str="ok\\ok<br/>"; echo$str; mb_ereg_replace('\\','¥',$str); echo$str; ?> としましたがエラーになりうまくいきません どう修正したらいいでしょうか?

    • ベストアンサー
    • 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
  • 配列から表の生成

    はじめまして。 PHP4とMySQLを勉強し始めて半年ほどの初心者です。 DB から重複したデータを除いて以下の様な表をHTMLの<table>タグで 索引のようなページ(表1)を作成しようとしています。 大文字のアルファベットは、見出しタグ<th>を使っています。 (表1) ------------------------- |  A   |  B   |  C   | ------------------------- | a12w4b | bfghj  | cfgjg  | | a243dd | bfffh  |      | | a9ss2s | bglfkg |      | | aa87da |      |      | ------------------------- |  D   |  E   |  F   | ------------------------- | dh125a | easdhf | fabc  | | dksk  | eb12f3 | fddddd | | dx123y | eghjck | fhjkhl | |      | elet  | fxxxcx | |      | ezxczm |      | --------------------------  以下、「Z」まで同様に繰り返し、一つの表で表示。 ・各値の文字列の長さは一定ではありません。 ・各値の最初の文字は、必ず「a」~「z」で始まります。 ・各値の最初の文字以外は、アルファベットと数字がランダムに入ります。 ・各値は重複するものが有りません。(ユニーク値) ・各値の数量は、同じでは有りません。 上記の条件から以下の様に処理しようと考えました。 ---------------------------------------------- distinct を使って値を取り出し  ↓ 配列に格納  ↓ foreach でループ  ↓ ereg でパターンマッチ(先頭文字一致)  ↓ <td>タグ内に値を入れる  ↓ HTML表示 --------------------------------------------- phpのコードは、以下のようにしました。 //test.php echo "<table border=\"1\">"; echo "<tbody>"; echo "<tr>    <th>A</th>    <th>B</th>    <th>C</th>    </tr>"; echo "<tr>"; while($row = mysql_fetch_object($res)){ foreach ($row as $str) { if(ereg ("^a", $str)){ echo "<td>". $str . "</td>"; echo "<td>". $str . "</td>"; echo "<td>". $str . "</td>"; } } echo "</tr>"; } echo "</tbody>"; echo "</table><br>"; が...これでは先頭の文字「a」の値だけが(表2)の様に、同じように3列表示されるだけです。 (当たり前なのですが...) (表2) ------------------------- |  A   |   B  |  C   | ------------------------- | a12w4b | a12w4b | a12w4b | | a243dd | a243dd | a243dd | | a9ss2s | a9ss2s | a9ss2s | | aa87da | aa87da | aa87da | ------------------------- ereg関数の部分を以下の様にしましたが、見出しの「A」・「B」・「C」に対応せず、うまく表示されません。 foreach ($row as $str) { if(ereg ("^a", $str)){ echo "<td>". $str . "</td>"; } if(ereg ("^b", $str)){ echo "<td>". $str . "</td>"; } if(ereg ("^c", $str)){ echo "<td>". $str . "</td>"; } } また、見出し「A」・「B」・「C」以降の「D」・「E」・「F」、「G」・「H」・「I」、... に対応する値をどの様に取り出し、表示すればよいのかも判りません。 どなたか判る方がいらっしゃれば、ご教授の程宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • mb_eregのブレースについて(住所分割)

    以下のページを参考に住所を分割しています。 http://kuroutoshikou.blog16.jp/index.php/2008/12/19/aspeb_eiuc_fa_saf_a_a_a_s 上記のページの{1}の意味がよく分からないので教えてください。 ---以下、ソース抜粋--- $addr = $_GET['addr']; $addr_conv = mb_convert_kana($addr, 'a'); //正規表現で切り分け mb_ereg("(東京都|[一-龠]+[府道県]){1}(石狩市|伊達市|八戸市|盛岡市|奥州市|南相馬市|香取市|上越市|宇陀市|姫路市|[一-龠ぁ-ヶ]+[市区郡]){1}([一-龠ぁ-ヶー]+[0-9\-‐F番地号条線西東丁目の]+){1}\s*([\sa-zA-z0-9一-龠ぁ-ヶー、・\-\(\)\.\/\']*)", $addr_conv, $match); //郡の場合の町村分割 if (($_GET['town_split']) && mb_ereg("郡$", $match[2])) { mb_ereg("([一-龠ぁ-ヶー]+[町村]){1}([一-龠ぁ-ヶー]*[0-9\-‐F番地号条線西東丁目の]+)", $match[3], $town); $match[3] = $town[2]; } //政令指定都市の区分割 if (($_GET['city_split']) && mb_ereg("区$", $match[2], $city) && $match[1] != "東京都") { mb_ereg("([一-龠ぁ-ヶ]+市){1}([一-龠ぁ-ヶ]+区){1}", $match[2], $city); $match[2] = $city[1]; } ---以上、ソース抜粋--- 試してみたところ、{1}がなくても動作するようですが、{1}にはどういう意味があるのでしょうか?

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

    function CheckHalfSizeKatakana($str) { $str= mb_trim(trim($str)); $pat = "^[ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲン?゛゜ゝゞー-・]+$"; if (mb_ereg_match($pat, $str)) { return true; } else { return false; } } このようにして半角カタカナをチェックしようと考えています。間違っているでしょうか?教えてください。

    • ベストアンサー
    • PHP