你可以unpack("H6", ","); 来查看逗号的unicode值
然后在perl_replace中使用[\uunicode]来匹配

解决方案 »

  1.   

    比如,
    $str = ","; //utf8编码的逗号,也就是说你的编辑器要是utf8,如果不是,你可以iconv
    $unicode = unpack("H6", ",");//
    print_r($unicode); 
    /*
    output : 
    Array
    (
        [1] => e
    )
    */
      

  2.   

    关于pack/unpack可以参看我写的这篇东西:
    http://blog.csdn.net/laruence/archive/2008/05/01/2357738.aspx
      

  3.   

    上面的结果错了,是这个,Array
    (
        [1] => efbc8c
    )
      

  4.   

    这样做不行
    因为我是要把所有的unicode中文符号都替换的,所以我需要知道一个范围,不知道unicode的中文标点有没有一个范围可以替换,或者其他的方法
      

  5.   

    。。你把你能想到的所有的标点符号,写到一个数组
    $interpunction = array(",", "。", .....);
    $unicode = array();
    foreach($interpunction as $v){
      $code = unpack("H6", $v);
      array_push($unicode,  $code[1];
    }然后,正则的pattern就是
     $pattern = "[";
    foreach($unicode as $v){
      $pattern .= "\u".$v;
    }
    $pattern .= "]";明白?
      

  6.   

    明白是明白.但这些中文标点未免也太多了- -
    到google上搜了一圈回来也么发现有人遇到这个问题
    实在不行的话,也只能用这个方法了
      

  7.   

    恩,你可以研究下unicode, 看看有什么规律没有。起码也有这个方法垫底么。
      

  8.   

    既然都会去掉GB2312下的符号的,那选转成GB2312,去掉符号后再转成UTF8;
      

  9.   

    我试了一下,先转成gb2312处理再转回utf8的方法可行这样也可以,不知道有没有不绕弯子的做法,请高手指点
      

  10.   

    好象没有什么好办办法如果全部是utf-8还是将中文标点列出来,正则替换或者,你将gb2312的标点转成utf-8,正则替换
      

  11.   

    本帖最后由 xuzuning 于 2008-07-02 11:43:44 编辑
      

  12.   


    误人子弟,UTF8采用的是UNICODE代码的扩展,不是GB2312的。