2

すべてUTFとしてエンコードされたPHP/MySQLを使用して、最近、中国語などの非ラテン文字のキャプチャを開始する必要がありました。文字列の長さと英数字をチェックするPHP検証があります。

if (!ereg("[[:alnum:]]{2,}",$_POST['company_name'])) {
    //error code here
}

これはマルチバイト文字では機能しません。長さが問題になることは理解していますが(1文字は1バイトに等しくありません)、誰かがUTF8言語文字の文字列を照合するためのリンク/ソリューションを提供してくれるかどうかを期待していました[*/

編集:xxの長さで、英語/中国語などの言語文字のみを含み、特殊文字*{/などは含まない文字列のみを受け入れたいと思います。うまくいけば、それが明確になります。

4

3 に答える 3

1

要件は少しあいまいですが、強制できるのは文字(おそらくマークと組み合わせて)と10進数のみです。

if (!preg_match('/^[\p{L}\p{M}\p{Nd}]{2,}$/u', $_POST['company_name'])) {
   //error here
}
于 2010-08-26T11:38:04.157 に答える
0

PHPのmbstring拡張機能にはmb_ereg()関数があります。これは、おそらく良い出発点になると思います。

于 2010-08-26T11:38:23.780 に答える
0

一致を試みることはできますが、正規表現にオプションを\p{L}|\p{N}追加する必要があります。u

出典:
www.regular-expressions.info

于 2010-08-26T11:40:40.693 に答える