用php的preg_match()函数匹配中文的时候,
匹配规则这么写,
$rule ='/[\u4e00-\u9fa5]/';
编译出错,说不知道\u,
该怎么办?
php怎么匹配utf-8编码的中文和gb2312编码的中文??正则表达式

解决方案 »

  1.   

    /[\x{4e00}-\x{9fa5}]/u
    字符串需要unicode
      

  2.   

    gbk 和 utf-8是不一样的...utf-8很轻松的就可以匹配了...
      

  3.   

    测试了一下,
    匹配出来时乱码。

    function pregCh($test){
    $rule ='/[\x{4e00}-\x{9fa5}]/u';
    preg_match($rule,$test,$result);
    return $result;
    }
    $test ='asfasdhs中afhajs90中文8327849023';
    var_dump(pregCh($test));
    输出结果是
    array(1) { [0]=> string(3) "涓�" } 
    页面编码是utf-8
    为什么呢?
      

  4.   

    你的php文件自身是gbk编码
    或者charset没有设为utf-8
      

  5.   

    哦,
    确实是啊,
    我用过的是notepad++
    设置格式为utf-8,
    结果匹配到的是乱码,
    接了个header('Content-type:text/html;charset=utf-8');
    就好了,
    编辑器搞得是毛啊
      

  6.   

    谁让你要所谓“国际化”呢?
    中国第一!gbk 无所不能