出産前後の痔にはご注意!

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」すら載ってません。何か不人気の理由があるのでしょうか?気に入ったのに不安で使えません。
お詳しい方、解説よろしくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

マルチバイトの正規表現は癖がありますよね。



preg_matchでも検索出来ますよ。オプションuを付けるのです。

if(preg_match( '/我輩は.である/u' ,'我輩は猫である')){
print "マッチ!";
}

この辺にも参考になる情報がありました。
http://ifs.seesaa.net/article/26300967.html
    • good
    • 0
この回答へのお礼

なるほど!
ど思ったんですが、「u」をつけたとたんエラーになってしまいだめでした…念のためまるごとコピペもしたんですが同じでした。
どうすれば…

*当方のバージョンは4.4.4です。

お礼日時:2007/07/08 03:50

#1です。


> uをつけたとたんエラーになってしまいだめでした
わたしも最初エラーが出たんです(笑。
phpのファイルの文字コードは何ですか?
ファイル自体がUTFで書いてないとエラーが出ますね。
多分バージョンは関係ないと思います。
    • good
    • 0
この回答へのお礼

ファイル自体の文字コードはもちろんUTF-8です。
念のためテラパッドで確認しましたが間違いなかったです。
困ったなあ…

お礼日時:2007/07/09 01:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング