$str = '中華人民共和国 123456789abcdefg';
echo preg_match("/^[u4e00-u9fa5_a-zA-Z0-9]{3,15}$",$strName);
上記のコードを実行すると、どのようなプロンプトが表示されるか確認してください。
警告: preg_match(): コンパイルに失敗しました: PCRE は、F:wwwrootphptest.php の行 2 のオフセット 3 で L、l、N、P、p、U、u、または X をサポートしていません
次の Perl エスケープ シーケンスは PHP 正規表現ではサポートされていないことが判明しました: L、l、N、P、p、U、u、または X
UTF-8 モードでは、"x{. . .}" の場合、中括弧内の内容は 16 進数を表す文字列です。元の 16 進エスケープ シーケンス xhh は、値が 127 より大きい場合、2 バイトの UTF-8 文字と一致します。
つまり、preg_match("/^[x80-xff_a-zA-Z0-9]{3,15}$",$strName); を解くことができます。