質問
PHPマニュアルには次のように記載されていますが、
ペルシャ数字が「UTF-8モード」で一致\d
するのはなぜですか?[[:digit:]]
推敲
関連のない質問の回答者の発言では、正規表現では、 \d
ASCII 数字だけでなく、たとえばペルシャ数字 ( ) にも一致0
する9
ことが言及されてい۰ ۱ ۲ ۳ ۴ ۵ ۶ ۷
ます。
上記の質問はjavaとタグ付けされていますが、動作は PHP でも観察できます。これを念頭に置いて、次の「テスト」を作成しました。
$string = 'I have ۳ apples and 5 oranges';
preg_match_all('/\d+/', $string, $capture);
結果の配列には、のみ$capture
の一致が含まれます。5
修飾子を使用しu
て「UTF-8 モード」をオンにし、これを実行します。
$string = 'I have ۳ apples and 5 oranges';
preg_match_all('/\d+/u', $string, $capture);
$capture
との両方۳
に一致が含まれます5
。
ノート
- この質問はPHP 5.6.22(最新のもの)に関するものです
- どちらのテストも、
C
ロケールを明示的に使用して実行されました。