免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5580 | 回复: 5
打印 上一主题 下一主题

自制的站内搜索,如何设置关键字过滤? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-10-12 06:39 |只看该作者 |倒序浏览
<form name="form1" method="post" action="search.php">
<input type="text" name="keyword">
<input type="submit" name="Submit" value="搜索">
</form>
<?
$searchkey = $_POST['keyword'];
require ("conn.php");  
mysql_select_db($dbname,$mylink);
$sql= "select     *   from   Table   where   name   like   '% ".$searchkey. "% '"
$result   =   mysql_query($sql);
while   ($row   =   mysql_fetch_array($result))   {
        echo   $row[ 'name '];
}
?>
如何在简单的站内搜索中,设置关键字过滤?
比如客户键入a, the, to时,跳过不检测 like   '% ".$searchkey. "% '。

论坛徽章:
0
2 [报告]
发表于 2010-10-12 10:33 |只看该作者
可以先写个过滤词的配置文件,然后直接用str_replace来把他过滤掉,不过更智能的做法就要自己去想了!

论坛徽章:
0
3 [报告]
发表于 2010-10-12 10:43 |只看该作者
为神马要过滤捏?说明还是有内容滴~~

论坛徽章:
0
4 [报告]
发表于 2010-10-12 11:56 |只看该作者
把需要过滤的字符串先写在配置文件,或者数组什么的,再拿出来比较,貌似这是很土的方法,
期待高人.. = =

论坛徽章:
0
5 [报告]
发表于 2010-10-12 16:02 |只看该作者
方法一:
先把你想过滤的词放在一个列表里
然后,读取数据库,读出来的内容用正则表达式去一条一条匹配你的过滤列表,含有的,就不显示了!这个方法用php的“Perl 兼容正则表达式函数”就ok!
方法二:
用mysql的正则表达式功能“REGEXP”,就可以了!但是如你的过滤列表太大,太长,用这个就不好了,如果短的话,就用msyql的!!
方法三
建立过渡列表后,在用户写东西时,就要检查,用js来做,不耗费系统资源!或者提交后用php来检查提交的内容,通过后再写入数据库~如果是放到数据库后,再检查的话,也就是每次显示都要匹配了~这样不太好了~

论坛徽章:
0
6 [报告]
发表于 2010-10-14 05:24 |只看该作者
楼上的讲解的很详细,我会去看一下这方面的教程。如果有问题,再向你请教。谢谢。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP