質問: 【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」すら載ってません。何か不人気の理由があるのでしょうか?気に入ったのに不安で使えません。 お詳しい方、解説よろしくお願いいたします。
回答: マルチバイトの正規表現は癖がありますよね。 preg_matchでも検索出来ますよ。オプションuを付けるのです。 if(preg_match( '/我輩は.である/u' ,'我輩は猫である')){ print "マッチ!"; } この辺にも参考になる情報がありました。 http://ifs.seesaa.net/article/26300967.html