请教高手
在PHP中如何屏蔽非法字符或不允许有非法字符进库?
就是用*替代屏蔽字符,
屏蔽字符的字库我有,是txt格式的,
怎么写php语句啊??
新手上路,请教各位前辈!最好通俗易懂的例子代码
分不多 谢谢了!

解决方案 »

  1.   

    举个例子:$a = array("/靠/","/妈的/","/草/","/jb/i","/鸡/"); //屏蔽字库 (注意:英文字符格式:/英文字符/i) i:忽略大小写
    $b = '你他妈的什么东西 靠,什么JB玩意,早晚得收拾你'; //输入字
    $out = preg_replace($a,"*",$b);
    echo $out ;输出:
    你他*什么东西 *,什么*玩意,早晚得收拾你
      

  2.   

    屏蔽字库是一个txt的文本,有13KB,不能像7楼那样全部列出来吧
      

  3.   

    那你把那个TXT打开  
    $a = array("/靠/","/妈的/","/草/","/jb/i","/鸡/"); 
    按7楼这个格式存储,然后匹配 替换
      

  4.   


    最好是把那个字库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);
      

  5.   


    while ($buffer = fgets($fd, 4096)) {
    这一句中$fd和4096是什么意思啊?
      

  6.   

    $fp = fopen('xxx.txt',r);
    $out = '';
    while ($buffer = fgets($fd, 4096))
    应该是
    $fp = fopen('xxx.txt',r);
    $out = '';
    while ($buffer = fgets($fp, 4096))
      

  7.   

    上代码吧,这是我做的一个留言板碰到的问题,提交留言时需要屏蔽一些字符<?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($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');
    ?>
    帮忙看下哪不对,因为我调试下来还是没有屏蔽掉
      

  8.   

    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";
    }
      

  9.   


    <?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');
    ?>最好不要屏蔽了字符在入库,自己查看的时候都是**,都不知道原话是什么。
    应该是先如库,显示的时候再屏蔽不良字符。
      

  10.   

    还有一个问题,我打印出$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","/鸡/");  这样的,应该如何修改呢