Heim >Backend-Entwicklung >PHP-Tutorial >解决php正则表达式验证中文的问题

解决php正则表达式验证中文的问题

WBOY
WBOYOriginal
2016-07-25 08:59:101127Durchsuche
  1. $str = '中华人民共和国123456789abcdefg';
  2. echo preg_match("/^[\u4e00-\u9fa5_a-zA-Z0-9]{3,15}$",$strName);
  3. ?>
复制代码

运行上面代码,会提示: Warning: preg_match(): Compilation failed: PCRE does not support \L, \l, \N, \P, \p, \U, \u, or \X at offset 3 in F:\wwwroot\php\test.php on line 2

究其原因,是因为:PHP正则表达式中不支持下列 Perl 转义序列:\L, \l, \N, \P, \p, \U, \u, or \X

在 UTF-8 模式下,允许用“\x{...}”,花括号中的内容是表示十六进制数字的字符串。 原来的十六进制转义序列 \xhh 如果其值大于 127 的话则匹配了一个双字节 UTF-8 字符。

解决方法: preg_match("/^[\x80-\xff_a-zA-Z0-9]{3,15}$",$strName);

比如下面的例子:

  1. /**
  2. * php正则表达式验证中文
  3. * edit bbs.it-home.org
  4. */
  5. $shouji ="哈哈哈哈";
  6. if (!preg_match("/^[\x80-\xff]{6,30}$/",$shouji)){
  7. echo "nonono";
  8. }
  9. else {
  10. echo "yesyesyes";
  11. }
  12. ?>
复制代码


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn