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

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

WBOY
WBOYOriginal
2016-05-25 16:41:141111browse

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

思路:

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

二、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! ";
}
?>


本文链接:

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

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn