提供一个方法:
依次把每个字符截取出来,判断其ASCII是不是落在0-255之间,如果不是,那就是中文了。
把判断后的字符分中文与非中文组合在两个新的字串。

解决方案 »

  1.   

    $CNstr = "你好啊。哈哈mm怎样了";
    preg_match_all('/([\xb0-\xf7][\xa0-\xfe])+|([\。a-zA-Z]+)/is',$CNstr,$m);
    print_r($m[0]);
      

  2.   

    PHP研究不深,主要搞ASP,没法给你代码了。
    最好的方式还是用正则。
      

  3.   

    不是这个效果 , 类似一个函数..
    function chinastr{}$CNstr = "你好啊。哈哈mm怎样了";echo chinastr($CNstr) ; //出来 你好啊哈哈怎样了
    echo unchinastr($CNstr) ; //出来 。mm...
      

  4.   

    如果用正则,建议你找找全角标点符号的正则表达,我这样是硬来的,供参考。
    function chinastr($CNstr)
    {
    preg_match_all('/([\xb0-\xf7][\xa0-\xfe])+|([\。a-zA-Z]+)/',$CNstr,$m);
    $t = preg_grep('/([\xb0-\xf7][\xa0-\xfe])+/',$m[0]);
    return implode('',$t);
    }
    function unchinastr($CNstr)
    {
    preg_match_all('/([\xb0-\xf7][\xa0-\xfe])+|([\。a-zA-Z]+)/',$CNstr,$m);
    $t = preg_grep('/([\xb0-\xf7][\xa0-\xfe])+/',$m[0],PREG_GREP_INVERT);
    return implode('',$t);
    }
    echo chinastr($CNstr)."<br>";
    echo unchinastr($CNstr);