【PHP程序高效率过滤非法内容的问题】-- 有类似问题请进来讨论,顶有分! 编码转换的问题到不难解决,用iconv或网上提供的程序即可做到。数据量大的话用二分法速度肯定比数组快,不过要先排序正则用preg_match在效率上要高于ereg(手册上是这么说的,没测试过) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果用hash表呢?先将被检测项和准备过滤的关键字的hash表示匹配一下,这样可以排除许多可能,然后再测匹配的...这样是否能降低复杂度? to adouggy(李雅子) :你所谓的hash表法如何实现?是把整个文本文件进行hash还是把单个字符串hash? 把一个简单的问题想的太复杂了无论怎样做都需要检查每一个关键字是否包含在文件中由于不分词,所以也就不存在优化查询的问题$contents = str_replace($关键字数组, '', $contents); 用PHP么,这可是服务器端脚本!!!你不怕你的服务器太累啊??这种功能用JAVASCRIPT等客户端脚本来实现比较好。算法可以讨论,实现就用JS吧。十五刚开始学做程序员,如果话有不当就当放屁!不知道CSDN会不会把“放屁”给咔嚓了:P 发一个UBB的解析函数上来或许有用哦function JsUBB(str){// 以下为十五工作室扩展UBB str=str.replace(" "," "); //四个空格 str=str.replace("<","<"); str=str.replace(">",">"); str=str.replace("\n","<br>"); //回车换行 str=str.replace("\r","<br>"); //回车 str=str.replace("\t"," "); //table//以下为标准UBB var re=/\[i\](.[^\[]*)\[\/i\]/gi; str=str.replace(re,"<i>$1</i>"); //斜体字 re=/\[b\](.[^\[]*)\[\/b\]/gi; str=str.replace(re,"<b>$1</b>"); //粗体字 re=/\[u\](.[^\[]*)\[\/u\]/gi; str=str.replace(re,"<u>$1</u>"); //下划线 re=/\[color=(.[^\[]*)\](.[^\[]*)\[\/color\]/gi; str=str.replace(re,"<font color=$1>$2</font>"); //字体颜色 re=/\[size=([1-7])\](.[^\[]*)\[\/size\]/gi; str=str.replace(re,"<font size=$1>$2</font>"); //字体大小 re=/\[face=(.[^\[]*)\](.[^\[]*)\[\/face\]/gi; str=str.replace(re,"<font face=$1>$2</font>"); //字体 re=/\[center\](.[^\[]*)\[\/center\]/gi; str=str.replace(re,"<div align='center'>$1</div>"); //居中 re=/\[right\](.[^\[]*)\[\/right\]/gi; str=str.replace(re,"<div align='right'>$1</div>"); //右对齐 re=/\[quote\](.[^\[]*)\[\/quote\]/gi; //引用 str=str.replace(re,"<table bgcolor='#E6FFE6' width='90%' style='border:1px #009900 dotted' align='center'><tr><td class='td1'>$1</td></tr></table>"); re=/\[fly\](.*)\[\/fly\]/gi; //飞行 str=str.replace(re,"<marquee width=90% behavior=alternate scrollamount=3>$1</marquee>"); re=/\[move\](.*)\[\/move\]/gi; //移动 str=str.replace(re,"<MARQUEE scrollamount=3>$1</marquee>"); re=/\[SHADOW=*([0-9]*),*(#*[a-z0-9]*),*([0-9]*)\](.[^\[]*)\[\/SHADOW]/gi; //阴影 str=str.replace(re,"<table width=$1><tr><td style='filter:shadow(color=$2, strength=$3)'>$4</td></tr></table>"); re=/\[GLOW=*([0-9]*),*(#*[a-z0-9]*),*([0-9]*)\](.[^\[]*)\[\/GLOW]/gi; //外发光 str=str.replace(re,"<table width=$1 ><tr><td style='filter:glow(color=$2, strength=$3)'>$4</td></tr></table>") re=/\[URL\](.[^\[]*)\[\/URL\]/gi; str=str.replace(re,"<a href='$1' target=_blank>$1</a>"); //超链接1 re=/\[URL=(.[^\[]*)\](.[^\[]*)\[\/URL\]/gi; str=str.replace(re,"<a href='$1' target=_blank>$2</a>"); //超链接2 re=/\[EMAIL\]([\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+)\[\/EMAIL\]/gi; str=str.replace(re,"<a href='mailto:$1'>$1</a>"); //电子邮件链接1 re=/\[EMAIL=([\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+)\](.[^\[]*)\[\/EMAIL\]/gi; str=str.replace(re,"<a href='mailto:$1'>$4</a>"); //电子邮件链接2 re=/\[img\](.[^\[]*)\[\/img\]/gi; str=str.replace(re,"<a href='$1' target=_blank><img src='$1' border='0' alt='单击在新窗口浏览'></a>"); //图片 re=/:em(\d{1,}):/gi; str=str.replace(re,"<img src='emot/$1.gif' border='0'>"); //表情图标 return str;} 楼上的,这种用JS没意义,关闭JS就无效了,必须服务端检测 if(preg_match("/六 合 彩/",$_POST[message])) { $insert=false; } 如果发现有这个字就不插入数据库上面我发回贴csdn就是不行了所以我空了格 无限极分类 xjax读取数据 急急急..... 关于PHP中多重引用的一种解决方法 smarty 循环问题!! linux http_proxy 与 php curl的问题 include 根目录 小问题 smtp发邮件太慢了,有没有快一点的? 如何让页面退回到刚才那页!!!!!! phpcms专题列表分页生成静态出错,动态正常 帮我看看用什么函数可以实行下面的结果 [初级]变量穿透问题 PHP环境配置问题,急!解决就给分
由于不分词,所以也就不存在优化查询的问题$contents = str_replace($关键字数组, '', $contents);
你不怕你的服务器太累啊??
这种功能用JAVASCRIPT等客户端脚本来实现比较好。算法可以讨论,实现就用JS吧。
十五刚开始学做程序员,如果话有不当就当放屁!不知道CSDN会不会把“放屁”给咔嚓了:P
{// 以下为十五工作室扩展UBB str=str.replace(" "," "); //四个空格
str=str.replace("<","<");
str=str.replace(">",">");
str=str.replace("\n","<br>"); //回车换行
str=str.replace("\r","<br>"); //回车
str=str.replace("\t"," "); //table//以下为标准UBB var re=/\[i\](.[^\[]*)\[\/i\]/gi;
str=str.replace(re,"<i>$1</i>"); //斜体字
re=/\[b\](.[^\[]*)\[\/b\]/gi;
str=str.replace(re,"<b>$1</b>"); //粗体字
re=/\[u\](.[^\[]*)\[\/u\]/gi;
str=str.replace(re,"<u>$1</u>"); //下划线
re=/\[color=(.[^\[]*)\](.[^\[]*)\[\/color\]/gi;
str=str.replace(re,"<font color=$1>$2</font>"); //字体颜色
re=/\[size=([1-7])\](.[^\[]*)\[\/size\]/gi;
str=str.replace(re,"<font size=$1>$2</font>"); //字体大小
re=/\[face=(.[^\[]*)\](.[^\[]*)\[\/face\]/gi;
str=str.replace(re,"<font face=$1>$2</font>"); //字体 re=/\[center\](.[^\[]*)\[\/center\]/gi;
str=str.replace(re,"<div align='center'>$1</div>"); //居中
re=/\[right\](.[^\[]*)\[\/right\]/gi;
str=str.replace(re,"<div align='right'>$1</div>"); //右对齐
re=/\[quote\](.[^\[]*)\[\/quote\]/gi; //引用
str=str.replace(re,"<table bgcolor='#E6FFE6' width='90%' style='border:1px #009900 dotted' align='center'><tr><td class='td1'>$1</td></tr></table>"); re=/\[fly\](.*)\[\/fly\]/gi; //飞行
str=str.replace(re,"<marquee width=90% behavior=alternate scrollamount=3>$1</marquee>");
re=/\[move\](.*)\[\/move\]/gi; //移动
str=str.replace(re,"<MARQUEE scrollamount=3>$1</marquee>");
re=/\[SHADOW=*([0-9]*),*(#*[a-z0-9]*),*([0-9]*)\](.[^\[]*)\[\/SHADOW]/gi; //阴影
str=str.replace(re,"<table width=$1><tr><td style='filter:shadow(color=$2, strength=$3)'>$4</td></tr></table>");
re=/\[GLOW=*([0-9]*),*(#*[a-z0-9]*),*([0-9]*)\](.[^\[]*)\[\/GLOW]/gi; //外发光
str=str.replace(re,"<table width=$1 ><tr><td style='filter:glow(color=$2, strength=$3)'>$4</td></tr></table>") re=/\[URL\](.[^\[]*)\[\/URL\]/gi;
str=str.replace(re,"<a href='$1' target=_blank>$1</a>"); //超链接1
re=/\[URL=(.[^\[]*)\](.[^\[]*)\[\/URL\]/gi;
str=str.replace(re,"<a href='$1' target=_blank>$2</a>"); //超链接2 re=/\[EMAIL\]([\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+)\[\/EMAIL\]/gi;
str=str.replace(re,"<a href='mailto:$1'>$1</a>"); //电子邮件链接1
re=/\[EMAIL=([\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+)\](.[^\[]*)\[\/EMAIL\]/gi;
str=str.replace(re,"<a href='mailto:$1'>$4</a>"); //电子邮件链接2 re=/\[img\](.[^\[]*)\[\/img\]/gi;
str=str.replace(re,"<a href='$1' target=_blank><img src='$1' border='0' alt='单击在新窗口浏览'></a>"); //图片
re=/:em(\d{1,}):/gi;
str=str.replace(re,"<img src='emot/$1.gif' border='0'>"); //表情图标 return str;
}
{
$insert=false;
}
上面我发回贴csdn就是不行了所以我空了格