首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > PHP >

php关键词拦截程序,拦截后如何知道哪个词为非法词组

2012-05-22 
php关键词拦截程序,拦截后怎么知道哪个词为非法词组?一、panduan.php?php/*** 判断文本中是否存在关键词*/

php关键词拦截程序,拦截后怎么知道哪个词为非法词组?
一、panduan.php
<?php

/**
 * 判断文本中是否存在关键词
 */
function filter_text($text, $badstring){
$filter = explode('|', $badstring);
foreach ($filter as $key) {
if(strpos($text, $key) !== false){
return true;
}
}
return false;
}

?>

二、filter.php
<?php
$badstring="拦我|此内容|不允许";
?>

三、index.php
<?php
require_once("panduan.php");
require_once("filter.php");
$biaoti="如果包含此内容就不能通过!";
if(filter_text($biaoti, $badstring)){
echo "对不起,你提示的内容包含“$*****”文字不能表,请删除“此内容”文字后再提交!";
exit();
}
?>



以上代码能正确拦截事先设置好的关键词,但怎么写才能提示是哪个关键词非法的?如果取得引号中的内容:“$*****”?

请高手帮忙,谢谢!

[解决办法]
在这里修改成
 if(strpos($text, $key) !== false){
return $key;
}

这里
if(filter_text($biaoti, $badstring)){
echo "对不起,你提示的内容包含“$*****”文字不能表,请删除“此内容”文字后再提交!";
exit();
}

修改成

$badstr=filter_text($biaoti, $badstring);

if($badstr){
echo "对不起,你提示的内容包含“.$badstr.”文字不能表,请删除“此内容”文字后再提交!";
exit();
}

大约如此.
[解决办法]

PHP code
$text = '拦我';$badstring = "/拦我|此内容|不允许/";if (preg_match($badstring, $text, $matchs)){    echo $matchs[0]; //var_dump($matchs);}
[解决办法]
关于二者的效率

测试代码:
PHP code
$start = microtime(true);$text = '拦我';$badstring = "/拦我|此内容|不允许/";$count = 0;for($i = 0; $i < 1000000; $i++) :if (preg_match($badstring, $text, $matchs)){    $count += 1;}endfor;$end = microtime(true);printf ("Complete Num: %d Total Time: %f sec (Using preg_match())", $count ,$end - $start); 

热点排行