是这样以前都是用正则替换的方法
现在要做的功能是把所有被屏蔽的字拿到
怎么解??

解决方案 »

  1.   

    $getMsg='我是共产党,还有,操你妹'; //用户输入
    $illegal=array('共产党','操你妹','非法3','非法4','非法N。。'); //需屏蔽的字符数组
    现在要的功能是拿到他输入的屏蔽字,实现:
    $getIllegal=array('共产党','操你妹');
      

  2.   

    不能让我去FOREACH($illegal)啊  那太耗时了。这个屏蔽字量是很大的
      

  3.   

    仅就你的示例,可以$getMsg='我是共产党,还有,操你妹'; //用户输入
    $illegal=array('共产党','操你妹','非法3','非法4','非法N。。'); //需屏蔽的字符数组$s = strtr($getMsg, array_flip($illegal));
    preg_match_all('/\d+/', $s, $r);
    foreach($r[0] as $k)
      $getIllegal[] = $illegal[$k];print_r($getIllegal);这只是原理性代码,离实际使用还有一段距离
      

  4.   

    $getMsg='我是共产党,还有,操你妹'; //用户输入
    $illegal=array('共产党','操你妹','非法3','非法4','非法N。。'); //需屏蔽的字符数组$pattern='/'.join('|',$illegal).'/';
    preg_match_all($pattern,$getMsg,$matches);
    print_r($matches[0]);这样效率会不会很慢??
      

  5.   

    学习中,话说PHP怎么实现分词?
      

  6.   


    你也可以用PHP的str_replace替换啊
    $getMsg='我是共产党,还有,操你妹'; //用户输入
    $illegal=array('共产党','操你妹','非法3','非法4','非法N。。'); //需屏蔽的字符数组$message=str_replace($illegal,"**",UrlDecode($getMsg));