- 締切済み
【PHP】「ereg_match」はなぜ不人気なのか?
PHP初心者です。 現在ファイルの中を英語や日本語で検索するプログラムを作っています。 検索といえば「preg_match」が一番人気あるように見えます。しかしたとえば、 mb_internal_encoding("UTF-8"); mb_regex_encoding("UTF-8"); if(preg_match( '/我輩は.である/' ,'我輩は猫である')){ print "マッチ!"; } 上記のような使い方をすると「.」は「猫」にマッチせず「...」にするとようやくマッチします。「preg_match」はマルチバイトに対応していないのでしょうか。 そこでマルチバイトと正規表現に対応した検索関数「mb_ereg_match」を知りました。 if(mb_ereg_match( '我輩は.である' ,'我輩は猫である')){ これなら正常にマッチします。 がしかし… 「mb_ereg_match」は全然辞書に載ってません。分厚いPHP辞書をいくつも持ってますが「ereg_match」すら載ってません。何か不人気の理由があるのでしょうか?気に入ったのに不安で使えません。 お詳しい方、解説よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- taketan_mydns_jp
- ベストアンサー率58% (450/773)
#1です。 > uをつけたとたんエラーになってしまいだめでした わたしも最初エラーが出たんです(笑。 phpのファイルの文字コードは何ですか? ファイル自体がUTFで書いてないとエラーが出ますね。 多分バージョンは関係ないと思います。
- taketan_mydns_jp
- ベストアンサー率58% (450/773)
マルチバイトの正規表現は癖がありますよね。 preg_matchでも検索出来ますよ。オプションuを付けるのです。 if(preg_match( '/我輩は.である/u' ,'我輩は猫である')){ print "マッチ!"; } この辺にも参考になる情報がありました。 http://ifs.seesaa.net/article/26300967.html
お礼
なるほど! ど思ったんですが、「u」をつけたとたんエラーになってしまいだめでした…念のためまるごとコピペもしたんですが同じでした。 どうすれば… *当方のバージョンは4.4.4です。
お礼
ファイル自体の文字コードはもちろんUTF-8です。 念のためテラパッドで確認しましたが間違いなかったです。 困ったなあ…