> 백엔드 개발 > PHP 튜토리얼 > php关键词拦截程序,拦截后如何知道哪个词为非法词组

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

WBOY
풀어 주다: 2016-06-13 13:30:58
원래의
1155명이 탐색했습니다.

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

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

?>

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

三、index.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);
}
<br><font color="#e78608">------解决方案--------------------</font><br>
<strong>关于二者的效率</strong><br><br>测试代码:<br>
로그인 후 복사
PHP code
$start = microtime(true);
$text = '拦我';
$badstring = "/拦我|此内容|不允许/";
$count = 0;
for($i = 0; $i 
                 
              
              
        
            
로그인 후 복사
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿