> php教程 > php手册 > PHP中屏蔽过滤指定关键字实现方法总结

PHP中屏蔽过滤指定关键字实现方法总结

WBOY
풀어 주다: 2016-05-25 16:41:14
원래의
1178명이 탐색했습니다.

我们经常会发现我们有提交留方的地方就会有很多的来发广告,后来想做一个屏蔽过滤指定关键字的功能,我搜索了几种方法介绍给大家有需要了解的朋友可参考.

思路:

一、把关键字专门写在一个文本文件里,每行一个,数量不限,有多少写多少.

二、PHP读取关键字文本,存入一个数组.

三、遍历关键字数组,挨个用strpos函数去看看内容有没有关键字,如果有,返回true,没有则返回false.

PHP代码如下:

<?php
/* PHP中用strpos函数过滤关键字 */
// 关键字过滤函数
function keyWordCheck($content) {
    // 去除空白
    $content = trim($content);
    // 读取关键字文本
    $content = @file_get_contents(&#39;keyWords.txt&#39;);
    // 转换成数组
    $arr = explode("n", $content);
    // 遍历检测
    for ($i = 0, $k = count($arr); $i < $k; $i++) {
        // 如果此数组元素为空则跳过此次循环
        if ($arr[$i] == &#39;&#39;) {
            continue;
        }
        // 如果检测到关键字,则返回匹配的关键字,并终止运行
        if (@strpos($str, trim($arr[$i])) !== false) {
            //$i=$k;
            return $arr[$i];
        }
    }
    // 如果没有检测到关键字则返回false
    return false;
}
$content = &#39;这里是要发布的文本内容。。。&#39;;
// 过滤关键字
$keyWord = keyWordCheck($content);
// 判断是否存在关键字
if ($keyWord) {
    echo &#39;你发布的内容存在关键字&#39; . $keyWord;
} else { //开源代码phprm.com
    echo &#39;恭喜!通过关键字检测&#39;;
    // 往下可以进行写库操作完成发布动作。
    
}
?>
로그인 후 복사

例子2 ,注,中文关键字过滤时使用的关键字文件为utf-8编码,代码如下:

<?php
/** 
 * 被禁止的关键字检测
 *
 * @param string $string  要检测的字符串
 * @param string $fileName 屏蔽关键字文件
 * @return bool
 */
function banwordCheck($string, $fileName) {
    if (!($words = file_get_contents($fileName))) {
        die(&#39;file read error!&#39;);
    }
    $string = strtolower($string);
    $matched = preg_match(&#39;/&#39; . $words . &#39;/i&#39;, $string, $result);
    if ($matched && isset($result[0]) && strlen($result[0]) > 0) {
        if (strlen($result[0]) == 2) {
            $matched = preg_match(&#39;/&#39; . $words . &#39;/iu&#39;, $string, $result);
        }
        if ($matched && isset($result[0]) && strlen($result[0]) > 0) {
            return true;
        } else {
            return false;
        }
    } else {
        return false;
    }
}
$content = &#39;测试关键字&#39;;
if (banwordCheck($content, &#39;./banwords.txt&#39;)) {
    echo "matched! ";
} else {
    echo "no match! ";
}
?>
로그인 후 복사


本文链接:

收藏随意^^请保留教程地址.

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿