Heim > php教程 > php手册 > Hauptteil

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

WBOY
Freigeben: 2016-05-25 16:41:14
Original
1151 Leute haben es durchsucht

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

思路:

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

二、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;;
    // 往下可以进行写库操作完成发布动作。
    
}
?>
Nach dem Login kopieren

例子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! ";
}
?>
Nach dem Login kopieren


本文链接:

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

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage