2011-06-26 1 views
2

私は、非ラテンスクリプト(具体的には、日本語、簡体字中国語、アラビア語)を処理するためにPHPアプリケーションを適応しようとしています。アプリケーションのデータ検証ルーチンは、入力をチェックするために正規表現を頻繁に使用しますが、システムに追加のロケールをインストールすることなく他の言語に\ w文字の種類を適合させる方法がわかりません。PHPで非ラテンスクリプト入力の検証をどのように処理できますか?

私たちがサポートしている言語の数が増えるにつれて、アプリケーションに取り組んでいた以前の開発者は、正規表現に必要な文字を追加しただけです(コードでは[\wÀÁÂÄÅÆÇÈÉ... etc]私が今サポートしなければならないすべてのアルファベットのためにこれを本当に行います。

誰にもこの問題に対処する方法に関するアドバイスがありますか?

+3

"検証" とは何を意味するのでしょうか?あなたはロケール対応の['ctype_alnum'](http://php.net/manual/en/function.ctype-alnum.php)を使用することができますが、あなたが求めているのは、"どの文字が英数字ですか?ロケール_ "... –

+0

PHPでunicodeが壊れています。人々が働くことを知っているいくつかの図書館へのリンクを見るのはいいでしょう。 –

+0

@ PHPのUnicodeはどのように「壊れていますか?ほとんどの基本的な文字列関数はそれを明示的にサポートしていません。うまく動作するもの。 – deceze

答えて

2

php.netにこのコメントを参照してください:例えばhttp://www.php.net/manual/en/regexp.reference.unicode.php#102756

//$string may only contain arabic letters 
preg_match('@^\p{Arabic}[email protected]',$string); 

//$string may only contain cyrillic letters 
preg_match('@^\p{Cyrillic}[email protected]',$string); 

//$string may contain word-characters and greek 
preg_match('@^[\p{Greek}\w][email protected]',$str); 

...とそう

上のデモンストレーションを: http://cecb.freephptest.com/

+0

「すべてのアルファベットの文字はどんな言語やスクリプトにもマッチします」というものはありますか? –

+0

ああ、[このウェブサイト](http://www.regular-expressions.info/unicode.html)によると、いくつかの言語は "\ p {レター}"をサポートして "あらゆる種類のレター"にマッチします。 PHPはありますか? –

+0

あなたはそれを試しましたか? –

関連する問題