php4について


以下のコードで「マッチ」と表示してしまいます。
なぜでしょうか?

解決方法を教えてください。

if(preg_match("/犬/","集める")){
print "マッチ";
}

よろしくお願いします。

回答の条件
  • 1人2回まで
  • 登録:2007/06/23 18:45:06
  • 終了:2007/06/23 19:38:31

回答(2件)

id:vector_xenon No.1

vector回答回数113ベストアンサー獲得回数42007/06/23 19:19:25

ポイント35pt

preg_matchではシングルバイトでのマッチングになるので、

「犬」の1バイト目 + 2バイト目が

「集める」の

・集の2バイト目 + めの1バイト目

・めの2バイト目 + るの1バイト目

のどれかにマッチしたと思われます。


マルチバイトでの正規表現マッチングを行う場合は

mb_ereg_matchをお使いください

id:worldtravel

ありがとうございました。

一致ではなく含むで使いたかったので

mb_eregで行けました。

2007/06/23 19:36:12
id:GEN111 No.2

GEN111回答回数472ベストアンサー獲得回数582007/06/23 19:21:04

ポイント35pt

EUC-JP で文字コードが

犬 : b8a4
集 : bdb8
め : a4e1

であるため、「集める」の bdb8a4e1a4eb のなかでマッチしています。


mb_ereg を使うか、utf-8 に変換して preg_match("/$a/u", $b) のように u指定子を付けるかするとよいでしょう。

id:worldtravel

ありがとうございました。

mb_eregを使いました。

どうしてもeucを使いたいので。


まだまだ素人ですね。

勉強になりました。

ありがとうございました。

2007/06/23 19:37:09

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません