>백엔드 개발 >PHP 튜토리얼 >중국어 PHP 정규식 검증 문제 해결

중국어 PHP 정규식 검증 문제 해결

WBOY
WBOY원래의
2016-07-25 08:59:101126검색
  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:wwwrootphptest.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. ?>
复制代码


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.