[PHP]全角数字にマッチする正規表現


全角数字にマッチさせるため下記正規表現を用意しました

<?php
mb_internal_encoding('euc-jp');
$str = "123";
$str = mb_convert_kana($str, "AK");
//echo $str;
if ( preg_match("/[0-9]+/", $str) ){
echo "matched";
} else {
echo "not matched";
}
?>

ところが上記を実行しても
"not matched"が表示されるばかりで一向にマッチする気配がありません
なぜかわかる方お願いします

なおコメントアウトしてある

echo $str;

を出力すると

123

と正しい値が出力されます

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2009/02/24 16:02:08
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:y-kawaz No.1

回答回数1422ベストアンサー獲得回数226

ポイント60pt

preg_match はSJISやEUC-JPに対応してないのでUTF-8でマッチさせてやればいいんじゃないでしょうか。

とりあえず "/[0-9]+/" の部分をUTF-8で渡してやれば動くようです。

例えば、このソースをUTF-8で保存すればそのままでも動くし、preg_match(mb_convert_encoding("/[0-9]+/", 'utf-8'), $str) に直してもいけました。

id:jayz

参考になりました

ありがとうございますm(_)m

2009/02/24 16:02:01

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

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

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

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

回答リクエストを送信したユーザーはいません