찾다
php教程php手册PHP利用strpos函数屏蔽关键字程序

PHP利用strpos函数屏蔽关键字程序

Jun 13, 2016 am 10:12 AM
phpstrpos하다키워드기능사용존재하다방패우리를시간메시지 보드프로그램

在我们做留言板时经常会需要去屏蔽关键字一些关键字,下面我来介绍利用txt保存要屏蔽关键字,然后再根据用户提交的数据进行过滤。

先看strpos函数

strpos() 函数返回字符串在另一个字符串中第一次出现的位置。

如果没有找到该字符串,则返回 false。

语法

strpos(string,find,start)参数 描述
string 必需。规定被搜索的字符串。
find 必需。规定要查找的字符。
start 可选。规定开始搜索的位置。

提示和注释

注释:该函数对大小写敏感。如需进行对大小写不敏感的搜索,请使用 stripos() 函数。

例子

 代码如下 复制代码

echo strpos("Hello world!","wo");
?>

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

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

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


PHP代码如下

 代码如下 复制代码

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

 

写完代码后,故意在变量$content中写了一个关键字内容,然后运行发现没有检测到关键字,执行结果是通过,换成其它禁止的关键字都通过。
郁闷,开始判断是不是哪里出问题
编码问题? 立即把keyWord.txt文件再次用记事本打开,然后另存为UTF-8格式。结果还是不行。
没有获取到keyWord.txt文本内容? 立即 print_r() 发现正常读取并按行转成了数组。
于是,我把关键字数组直接声明写成死的在程序中

 代码如下 复制代码

/**
 * PHP中用strpos函数过滤关键字
 * 琼台博客
 */
// 关键字过滤函数
function keyWordCheck($content){
        // 去除空白
    $content = trim($content);
        // 读取关键字文本
    //$content = @file_get_contents('keyWords.txt');
        // 转换成数组
    //$arr = explode("n", $content);
        // 直接在程序中声明关键字数组
        $arr = array('关键字1','关键字2','关键字3','关键字4'...);
        // 遍历检测
    for($i=0,$k=count($arr);$i                 // 如果此数组元素为空则跳过此次循环
        if($arr[$i]==''){
              continue;   
        }
 
                // 如果检测到关键字,则返回匹配的关键字,并终止运行
        if(@strpos($str,$arr[$i])!==false){
            //$i=$k;   
            return $arr[$i];
        }   
    }
        // 如果没有检测到关键字则返回false   
    return false;
}
 
$content = '这里是要发布的内容,含有关键字2';
// 过滤关键字
$keyWord =  keyWordCheck($content);
 
// 判断是否存在关键字
if($keyWord){
        echo '你发布的内容存在关键字【'.$keyWord.'】';
}else{
        echo '恭喜!通过关键字检测';
        // 往下可以进行写库操作完成发布动作。
}
// 程序运行结果:你发布的内容存在关键字【关键字2】
// 程序正常

如果在PHP中声明关键字数组,就能起到作用,如果读取文本文件就无效,见鬼了?
正在百思不得其解之时,想到了会不会是从文本文件中读取的内容有空格或者换行符没有过滤所导致?于是在遍历匹配那里加了一个trim函数

加了trim()函数过滤空白后运行通过测试,原来瞎折腾了半天问题就在这里。

 代码如下 复制代码

 

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

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경