$content="姐姐的大鸡巴";
$file='pbzf.txt';//屏蔽字库
$a=file_get_contents($file);
//echo $a;
$out = preg_replace("/[$a]/","*",$content);
echo $out;
输出的是“******************“,但实际应该是输出”姐姐的***“,
请教各位代码应该如何修改?

解决方案 »

  1.   

    echo $a;   显示什么
      

  2.   

    $a是'pbzf.txt'这个文件里的屏蔽字库
      

  3.   

    $out = preg_replace("/[$a]/","*",$content);
    这句话的意思是把字符串$a中任意一个字符,并且这个字符包含在$content中,那么就把这个字符替换成“*”
    如果“姐姐的大鸡巴”都被替换成“*”了,那么可以肯定pbzf.txt字库中一定有“姐”“的”“大”“鸡”“巴”,这5个字符。
      

  4.   

    昨天在另外一个贴子里已经说了
    字库的设计很关键,最好用标志符(一般用空格或逗号)隔开各个关键此。
    读取文本后用explode转换成数组。其实最好的办法是把屏蔽字库设计成一个数组,各个关键字用 “/xxx/”这样的格式,直接引用,效率高,不出错。
      

  5.   

    $file='pbzf.txt';
    $out=file_get_contents($file);
    //echo $out;
    $c=explode(',',$out);
    $a=array();
    foreach($c as $v){
    $a[]="/".$v."/i";
    }print_r($a);
    我print_r($a)输的是/“xxx”/格式的,如何修改才能成为“/xxx/”这样的啊?
      

  6.   

    我print_r($a)输的是/“xxx”/格式的,如何修改才能成为“/xxx/”这样的啊?
    ------------------------------------------------------------------
    说明字库中的格式是:“鸡巴”,“吊”,“操”.......怎么办? 两个方法:
    一: 把字库中的双引号全去掉,只留逗号作为分割符二: 改代码$file='pbzf.txt';
    $out=file_get_contents($file);
    //echo $out;
    preg_match_all('/"(.*?)"/',$out,$c);//注意这里的双引号,是英文输入法的
    //如果字库中的双引号是中文输入法的,须改用下面这句代码
    //preg_match_all('/“(.*?)”/',$out,$c);
    $a=array();
    foreach($c as $v){
        $a[]="/".$v."/i";
    }print_r($a);