php中如何屏蔽非法字符 请教高手在PHP中如何屏蔽非法字符或不允许有非法字符进库?就是用*替代屏蔽字符,屏蔽字符的字库我有,是txt格式的,怎么写php语句啊??新手上路,请教各位前辈!最好通俗易懂的例子代码分不多 谢谢了! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 举个例子:$a = array("/靠/","/妈的/","/草/","/jb/i","/鸡/"); //屏蔽字库 (注意:英文字符格式:/英文字符/i) i:忽略大小写$b = '你他妈的什么东西 靠,什么JB玩意,早晚得收拾你'; //输入字$out = preg_replace($a,"*",$b);echo $out ;输出:你他*什么东西 *,什么*玩意,早晚得收拾你 屏蔽字库是一个txt的文本,有13KB,不能像7楼那样全部列出来吧 那你把那个TXT打开 $a = array("/靠/","/妈的/","/草/","/jb/i","/鸡/"); 按7楼这个格式存储,然后匹配 替换 最好是把那个字库txt 做成php array,然后include这个php ,然后就可以直接用我的那个代码了。这样效率高。如果你非要用txt,那就只有先读取这个txt$fp = fopen('xxx.txt',r);$out = '';while ($buffer = fgets($fd, 4096)) { $out .=$buffer ;}fclose($fp);$c = explode(' ',$out);//如果你的文本的关键字是用空格分隔的;//如果你的文本,仅仅是文字,各个关键字没有用“/xxx/”这样的格式,那就加上下面一段代码$a = array();foreach($a as $v){ $a[] = "/".$v."/i";}然后再替换:$b = '你他妈的什么东西 靠,什么JB玩意,早晚得收拾你'; //输入字$out = preg_replace($a,"*",$b); while ($buffer = fgets($fd, 4096)) {这一句中$fd和4096是什么意思啊? $fp = fopen('xxx.txt',r);$out = '';while ($buffer = fgets($fd, 4096))应该是$fp = fopen('xxx.txt',r);$out = '';while ($buffer = fgets($fp, 4096))吧 上代码吧,这是我做的一个留言板碰到的问题,提交留言时需要屏蔽一些字符<?phprequire_once( 'smarty_inc.php');require_once ('conn.php');$name=$_POST["text"];$title=$_POST["textfield"];$content=$_POST["textarea"];$fp=fopen('pbzf.txt',r);//pbzf.txt是屏蔽字库$out='';while($buffer=fgets($fp,4096)){ $out.=$buffer;}fclose($fp);$c=explode('',$out);$a=array();foreach($a as $v){ $a[]="/".$v."/i";}$out=preg_replace($a,"*",$content);if($_POST["text"]!=""&&$_POST["textfield"]!=""&&$_POST["textarea"]!="") {insert($name,$title,$out);//inser是插入数据库,Insert into}$smarty=new Smarty();$smarty->display('index.html');?>帮忙看下哪不对,因为我调试下来还是没有屏蔽掉 fclose($fp);$c=explode('',$out);$a=array();foreach($a as $v){ $a[]="/".$v."/i";}//应该是fclose($fp);$c=explode('',$out);$a=array();foreach($c as $v){ $a[]="/".$v."/i";} <?phprequire_once( 'smarty_inc.php');require_once ('conn.php');$name=$_POST["text"];$title=$_POST["textfield"];$content=$_POST["textarea"];$fp=fopen('pbzf.txt',r);//pbzf.txt是屏蔽字库$out='';while($buffer=fgets($fp,4096)){ $out.=$buffer;}fclose($fp);$c=explode(' ',$out);//这里要注意,是空格,不是空$a=array();foreach($c as $v){ $a[]="/".$v."/i";}$out=preg_replace($a,"*",$content);//注意载入库之前最好作特殊字符转换或过滤,提高安全性if($_POST["text"]!=""&&$_POST["textfield"]!=""&&$_POST["textarea"]!="") {insert($name,$title,$out);//inser是插入数据库,Insert into}$smarty=new Smarty();$smarty->display('index.html');?>最好不要屏蔽了字符在入库,自己查看的时候都是**,都不知道原话是什么。应该是先如库,显示的时候再屏蔽不良字符。 还有一个问题,我打印出$a,是这样的:$fp=fopen('pbzf.txt',r);$out='';while($buffer=fgets($fp,4096)){ $out.=$buffer;}fclose($fp);$c=explode(' ',$out);$a=array();foreach($c as $v){ $a[]="/".$v."/i";}print_r($a)输出的类似Array([0]=>/"毛泽东","共产党",..."坐台","做爱";/i)我想得到的是$a = array("/靠/","/妈的/","/草/","/jb/i","/鸡/"); 这样的,应该如何修改呢 php 验证码报错Call to undefined function imagecreatetruecolor() 多种方法无效 URL太长导致参数被截断的问题 php游戏开发 php如何链接ms sqlserver php插入postgre数据库问题 高手帮忙看一下这个数据库错误是什么引起的? 一个类值的问题 請大家幫忙看看!!!能用 <select> 做出分層的下拉菜單不,如果不行有什麼辦法來代替呢??? 关于调试 php 的问题。 PHP拦截器 PHP读TXT编码问题 找一个php_dio.dll文件
$b = '你他妈的什么东西 靠,什么JB玩意,早晚得收拾你'; //输入字
$out = preg_replace($a,"*",$b);
echo $out ;输出:
你他*什么东西 *,什么*玩意,早晚得收拾你
$a = array("/靠/","/妈的/","/草/","/jb/i","/鸡/");
按7楼这个格式存储,然后匹配 替换
最好是把那个字库txt 做成php array,然后include这个php ,然后就可以直接用我的那个代码了。
这样效率高。如果你非要用txt,那就只有先读取这个txt
$fp = fopen('xxx.txt',r);
$out = '';
while ($buffer = fgets($fd, 4096)) {
$out .=$buffer ;
}
fclose($fp);
$c = explode(' ',$out);//如果你的文本的关键字是用空格分隔的;
//如果你的文本,仅仅是文字,各个关键字没有用“/xxx/”这样的格式,那就加上下面一段代码
$a = array();
foreach($a as $v){
$a[] = "/".$v."/i";
}
然后再替换:
$b = '你他妈的什么东西 靠,什么JB玩意,早晚得收拾你'; //输入字
$out = preg_replace($a,"*",$b);
while ($buffer = fgets($fd, 4096)) {
这一句中$fd和4096是什么意思啊?
$out = '';
while ($buffer = fgets($fd, 4096))
应该是
$fp = fopen('xxx.txt',r);
$out = '';
while ($buffer = fgets($fp, 4096))
吧
require_once( 'smarty_inc.php');
require_once ('conn.php');
$name=$_POST["text"];
$title=$_POST["textfield"];
$content=$_POST["textarea"];
$fp=fopen('pbzf.txt',r);//pbzf.txt是屏蔽字库
$out='';
while($buffer=fgets($fp,4096)){
$out.=$buffer;
}
fclose($fp);
$c=explode('',$out);
$a=array();
foreach($a as $v){
$a[]="/".$v."/i";
}
$out=preg_replace($a,"*",$content);
if($_POST["text"]!=""&&$_POST["textfield"]!=""&&$_POST["textarea"]!="") {
insert($name,$title,$out);//inser是插入数据库,Insert into
}
$smarty=new Smarty();
$smarty->display('index.html');
?>
帮忙看下哪不对,因为我调试下来还是没有屏蔽掉
$c=explode('',$out);
$a=array();
foreach($a as $v){
$a[]="/".$v."/i";
}//
应该是
fclose($fp);
$c=explode('',$out);
$a=array();
foreach($c as $v){
$a[]="/".$v."/i";
}
<?php
require_once( 'smarty_inc.php');
require_once ('conn.php');
$name=$_POST["text"];
$title=$_POST["textfield"];
$content=$_POST["textarea"];
$fp=fopen('pbzf.txt',r);//pbzf.txt是屏蔽字库
$out='';
while($buffer=fgets($fp,4096)){
$out.=$buffer;
}
fclose($fp);
$c=explode(' ',$out);//这里要注意,是空格,不是空
$a=array();
foreach($c as $v){
$a[]="/".$v."/i";
}
$out=preg_replace($a,"*",$content);
//注意载入库之前最好作特殊字符转换或过滤,提高安全性
if($_POST["text"]!=""&&$_POST["textfield"]!=""&&$_POST["textarea"]!="") {
insert($name,$title,$out);//inser是插入数据库,Insert into
}
$smarty=new Smarty();
$smarty->display('index.html');
?>最好不要屏蔽了字符在入库,自己查看的时候都是**,都不知道原话是什么。
应该是先如库,显示的时候再屏蔽不良字符。
$out='';
while($buffer=fgets($fp,4096)){
$out.=$buffer;
}
fclose($fp);
$c=explode(' ',$out);
$a=array();
foreach($c as $v){
$a[]="/".$v."/i";
}
print_r($a)输出的类似Array([0]=>/"毛泽东","共产党",..."坐台","做爱";/i)
我想得到的是$a = array("/靠/","/妈的/","/草/","/jb/i","/鸡/"); 这样的,应该如何修改呢