私はすでにここを検索し、この投稿に関連する同様の投稿を見つけましたが、解決策はまだ見つかりませんでした。
私はこれを試しました:
$text = "الحمد لله رب العالمين hello";
echo $is_arabic = preg_match('/\p{Arabic}/u', $text);
Unicodeフラグを追加しましたが、英語の文字を追加するとtrueが返されます。これに対する修正はありますか?
アイデアの人はいますか?
前もって感謝します
Unicodeフラグを使用します。
$text = "الحمد لله رب العالمين";
echo $is_arabic = preg_match('/\p{Arabic}/u', $text);
here __^
アラビア語のみを一致させたい場合は、次のことを行う必要があります。
echo $is_arabic = preg_match('/^[\s\p{Arabic}]+$/u', $text);
更新:クラスがサポートされていないことについては明らかに間違っているようです(「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);