关于屏蔽字符的问题 $content="姐姐的大鸡巴";$file='pbzf.txt';//屏蔽字库$a=file_get_contents($file);//echo $a;$out = preg_replace("/[$a]/","*",$content);echo $out;输出的是“******************“,但实际应该是输出”姐姐的***“,请教各位代码应该如何修改? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 echo $a; 显示什么 $a是'pbzf.txt'这个文件里的屏蔽字库 $out = preg_replace("/[$a]/","*",$content);这句话的意思是把字符串$a中任意一个字符,并且这个字符包含在$content中,那么就把这个字符替换成“*”如果“姐姐的大鸡巴”都被替换成“*”了,那么可以肯定pbzf.txt字库中一定有“姐”“的”“大”“鸡”“巴”,这5个字符。 昨天在另外一个贴子里已经说了字库的设计很关键,最好用标志符(一般用空格或逗号)隔开各个关键此。读取文本后用explode转换成数组。其实最好的办法是把屏蔽字库设计成一个数组,各个关键字用 “/xxx/”这样的格式,直接引用,效率高,不出错。 $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/”这样的啊? 我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); php已get方式获取参数,处理后如何返回值 字符串分割问题(保留分割符) 请问外建的定义问题 如何实现这样的递归删除呢? 关于php画图保存到数据库的问题 插入记录无效是为什么? 看我这行代码有什么问题啊? 为什么按IE的刷新按钮又往数据库里重新insert数据? 正则表达式的问题? 我只想写个确认对话框而已,写不出 PDO 可否在 SQL 語句中使用 表名参数 [百度分享]PHP函数的实现原理及性能分析(四)
这句话的意思是把字符串$a中任意一个字符,并且这个字符包含在$content中,那么就把这个字符替换成“*”
如果“姐姐的大鸡巴”都被替换成“*”了,那么可以肯定pbzf.txt字库中一定有“姐”“的”“大”“鸡”“巴”,这5个字符。
字库的设计很关键,最好用标志符(一般用空格或逗号)隔开各个关键此。
读取文本后用explode转换成数组。其实最好的办法是把屏蔽字库设计成一个数组,各个关键字用 “/xxx/”这样的格式,直接引用,效率高,不出错。
$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/”这样的啊?
------------------------------------------------------------------
说明字库中的格式是:“鸡巴”,“吊”,“操”.......怎么办? 两个方法:
一: 把字库中的双引号全去掉,只留逗号作为分割符二: 改代码$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);