2

私はすでにここを検索し、この投稿に関連する同様の投稿を見つけましたが、解決策はまだ見つかりませんでした。

私はこれを試しました:

$text = "الحمد لله رب العالمين hello";

echo $is_arabic = preg_match('/\p{Arabic}/u', $text);

Unicodeフラグを追加しましたが、英語の文字を追加するとtrueが返されます。これに対する修正はありますか?

アイデアの人はいますか?

前もって感謝します

4

2 に答える 2

5

Unicodeフラグを使用します。

$text = "الحمد لله رب العالمين";
echo $is_arabic = preg_match('/\p{Arabic}/u', $text);
                                   here __^

アラビア語のみを一致させたい場合は、次のことを行う必要があります。

echo $is_arabic = preg_match('/^[\s\p{Arabic}]+$/u', $text);
于 2012-09-24T12:56:28.223 に答える
3

更新:クラスがサポートされていないことについては明らかに間違っているようです(「Greek」や「InMusicalSymbols」などの拡張プロパティはPCREではサポートされていません」というドキュメントがありますが、http://php.net/manualのコメント/en/regexp.reference.unicode.php#102756はサポートされていると言っているので、M42の方が良い答えだと思います。ただし、次の範囲で実行できます。

$text = "الحمد لله رب العالمين";

echo $is_arabic = 
preg_match('/^[\s\x{0600}-\x{06FF}\x{0750}-\x{077F}\x{08A0}-\x{08FF}\x{FB50}-\x{FDFF}\x{FE70}-\x{FEFF}\x{10E60}\x{10E60}—\x{10E7F}\x{1EE00}—\x{1EEFF}]+$/u', $text);
于 2012-09-24T12:50:44.883 に答える