$str="PHP把一个变$^&()_量sfadf中的.;[]];',.中文提取出asdfa,.'']]\[[来,把英文过滤了";像这样的一个内容,把中文提取出来,别的符号和英文全过滤了要怎么过滤掉?只留下四方方的中文,别的全不要

解决方案 »

  1.   

    $chstr="中文简体afeowahgieawhj,:<?>中文繁體";  
    echo preg_replace(array("/[a-zA-Z0-9]+/","/[[:punct:]]/"), "", $chstr);
      

  2.   

    $chstr="中文简体afeowahgieawhj,:<?>中文繁體";  
    echo preg_replace(array("/[a-zA-Z0-9]+/","/[[:punct:]]/"), "", $chstr);
    验证实现了功能
      

  3.   

    依你的意思,还须过滤掉日文,韩文,拉丁文,阿拉伯文之类的?
    preg_replace之前还需先mb_convert_encoding()为utf-8,然后加一条正则?preg_match('/\P{Han}+/', $str, $match);//好像不能分辨日语和中文。preg_match('/[\x{4e00}-\x{9fa5}\w-]+/u', $str, $match);//字符range范围不是很了解。前辈,还是你帮忙解决吧。
      

  4.   

    GB2312$str="PHP把一个变$^&()_量sfadf中的.;[]];',.中文提取出asdfa,.'']]\[[来,把英文过滤了";
    preg_match_all("/[".chr(0xa1)."-".chr(0xff)."]+/", $str, $a);
    echo implode("", $a[0]);
      

  5.   

    $str = '这{}————)——(,jl.ajfklsa,..,{}_+)_)_*()*&^&%$%*(&*……&%……%¥……¥%……》《》?个,例,,子....,.中有fsa{})_<>?&*%&$&$中文哦,我要rskjfoj把fdkjf英文删dskfadiao掉哦,';
    preg_match_all('/[\x80-\xff]+/', $str, $arr);
    //var_dump($arr);
    echo implode('', $arr[0]);
    结果:这{}————)——((…………¥……¥……》《》?个,例子中有中文哦,我要把英文删掉哦,用中方输入法输入的符号会保留,用英文输入的符号会删掉。\x00-\x79就是英文和数字,里面的中文和中文符号就会被删掉。
    和6楼的是一样的,
      

  6.   


    $str="abc一ABC二123三!@#四  繁體[]{}사람은";  
    echo $str."<br />";
    $preg = "/[\x{4e00}-\x{9fa5}]+/u";
    preg_match_all($preg, $str, $a);
    echo implode("", $a[0]);
    abc一ABC二123三!@#四 繁體[]{}사람은
    一二三四繁體