留言板内容不文明词语过滤的问题
如题。
现在不文明词语是个数组,在留言板内容后,我需要用这个不文明词语数组里面逐个查找留言板内容中是否有匹配的。如果有则提示。在纠结着怎么样才能实现这个不文明词语过滤的效果
回复讨论(解决方案)
首先得有一个脏词包(数据库,或者数组形式)。然后循环正则替换。
function filterWd($content){ $fn = "common/filterword.txt"; $fd = fopen($fn, "rb"); if(file_exists($fn)){ $fw = array(); while(!feof($fd)){ $fw[] = fgets($fd); } for($i = 0; $i < count($fw); $i++){ $srs = stripos($content, $fw[$i]); if($srs = false){ echo "error"; }else{ echo "您输入的内容包含不文明用语'$fw[$i]',请重新输入"; break; } } }else{ echo null; }}filterWd("你妹的找死啊");
比如 filterword.txt 里面有 不文明、你妹、找死 三个词语 “echo "您输入的内容包含不文明用语'$fw[$i]',请重新输入";” 这行输出的永远是 不文明 这个单词啊,这个怎么判断?
12行的 if($srs = false){
改为 if($srs == false){
12行的 if($srs = false){
改为 if($srs == false){
嗯,我改过来了还是觉得不行。但是我后面改了一下要过滤的词语后就能找出来了,现在问题又来了,为什么有些词语明明是有的就是没检测出来。如
function filterWd($content){ $fw = array("不文明", "去你的"); for($i = 0; $i < count($fw); $i++){ $srs = stripos($content, $fw[$i]); if($srs == false){ echo "error 第" . $i . "次<br />"; }else{ echo "您输入的内容包含不文明用语'$fw[$i]',请重新输入"; break; } } }filterWd("不文明啊去你的");输出:error 第0次您输入的内容包含不文明用语'去你的',请重新输入//为什么不首先检测到“不文明”呢?
你不是在找到第一个就不再找(break)了吗?
第一个 “不文明” 不等于 false 输出:您输入的内容包含不文明用语'去你的',请重新输入。然后再断开
不应该是这样的吗?怎么会跳到第二个“去你的”去断开
出现的次序是由你的字典顺序决定的
如果你用 trie 算法(精华区有)的话,才能按输入文字的次序检查
不是很理解 , 刚接触不久
你的算法是遍历字典,逐个查看字典字是否出现在正文中
也就是字典有多大,就要检查多少遍
而 trie 算法是:逐字扫描正文,检查由字组成的次是否出现在字典中
只需扫描一遍正文,就可找到所有存在的字典字
经你这么,有点似懂非懂。我换了个 strstr() 就解决了这个问题, strstr() 应该就是全文检索
unction filterWd($content){ $fw = array("天堂", "地狱", "找死", "你妹的", "不文明"); for($i = 0; $i < count($fw); $i++){ $srs = stristr($content, $fw[$i]); if($srs == false){ echo "error"; }else{ echo "您输入的内容包含不文明用语'$fw[$i]',请重新输入"; break; } } }filterWd("不文明啊去你的天堂找死");输出:您输入的内容包含不文明用语'天堂',请重新输入//不管我数组里面怎么打乱次序,数组中第一个 “天堂” 首先在正文中被检索到
如果只是用单个字符串去检索正文用 strpos() 效率应该会更快些
关键是我现在是数组去检索正文 还得判断从数组中取出的是不是匹配 这个有点难理解
if($srs === false){
echo "error 第" . $i . "次
";
}else{
echo "您输入的内容包含不文明用语'$fw[$i]',请重新输入";
break;
}
//楼主该好好看手册了。
if($srs === false){
echo "error 第" . $i . "次
";
}else{
echo "您输入的内容包含不文明用语'$fw[$i]',请重新输入";
break;
}
//楼主该好好看手册了。
有一个我真的不明白,读取文件得来的 存到数组里面
运行到这步
(在下面这行代码之前我运行过 echo $fw[0....9])都是有结果的)
$srs = stristr($content, $fw[$i]); //到这行就是 false 了
返回值永为 false ;
实在让人费解
用var_dump();分别输出一下两个值看看。
var_dump() 也度过了, 只要是过了 $srs = stristr($content, $fw[$i]); 输出的全都是 false
function filterWd($content){ $fw = array("天堂", "地狱", "找死", "你妹的", "不文明"); for($i = 0; $i < count($fw); $i++){ $srs = stristr($content, $fw[$i]); if($srs !== false){ echo "您输入的内容包含不文明用语'$fw[$i]',请重新输入<br>"; //break; } } }filterWd("不文明啊去你的天堂找死");
您输入的内容包含不文明用语'找死',请重新输入
您输入的内容包含不文明用语'不文明',请重新输入
之前写了个php替换敏感字符的类,有白名单和黑名单。
黑名单的会替换为*。
可以参考一下: http://blog.csdn.net/fdipzone/article/details/8486985
function filterWd($content){ $fw = array("天堂", "地狱", "找死", "你妹的", "不文明"); for($i = 0; $i < count($fw); $i++){ $srs = stristr($content, $fw[$i]); if($srs !== false){ echo "您输入的内容包含不文明用语'$fw[$i]',请重新输入<br>"; //break; } } }filterWd("不文明啊去你的天堂找死");
您输入的内容包含不文明用语'找死',请重新输入
您输入的内容包含不文明用语'不文明',请重新输入
我知道这样是可以。如果数组是读取文件得来的就不行
你读文件时没有去掉换行符
$fn = "common/filterword.txt";$fd = fopen($fn, "rb");if(file_exists($fn)){ $fw = array(); while(!feof($fd)){ $fw[] = trim(fgets($fd)); }}print_r($fw);
干脆这样
$fn = "common/filterword.txt";$fw = file($fn, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);print_r($fw);
过滤的话...可不可以不提示直接和谐后发布?
echo str_replace($脏话数组, , $content);
还真的是这样,去掉 空格 换行符 就可以了
$fw[] = trim(fgets($fn));
然后再检索 strstr($content,$fw[$i]);
这样就可以了

핫 AI 도구

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

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

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











특히 지난 10년 동안 모바일 장치는 친구 및 가족과 콘텐츠를 공유하는 주요 방법이 되었습니다. 접근하기 쉽고 사용하기 쉬운 인터페이스와 실시간으로 이미지 및 비디오를 캡처할 수 있는 기능은 콘텐츠 제작 및 공유를 위한 탁월한 선택입니다. 그러나 악의적인 사용자가 이러한 도구를 악용하여 보기에 적합하지 않고 사용자의 동의가 필요하지 않은 원치 않는 민감한 콘텐츠를 전달하기 쉽습니다. 이러한 일이 발생하지 않도록 iOS17에는 "민감한 콘텐츠 경고"라는 새로운 기능이 도입되었습니다. 이에 대해 살펴보고 iPhone에서 사용하는 방법을 살펴보겠습니다. 새로운 민감한 콘텐츠 경고는 무엇이며 어떻게 작동하나요? 위에서 언급한 것처럼 민감한 콘텐츠 경고는 사용자가 iPhone을 포함한 민감한 콘텐츠를 보지 못하도록 설계된 새로운 개인 정보 보호 및 보안 기능입니다.

Microsoft Edge 브라우저에서 360 탐색 페이지를 여는 페이지를 변경하는 방법은 실제로 매우 간단하므로 이제 Microsoft Edge에서 360 탐색 페이지를 여는 페이지를 변경하는 방법을 공유하겠습니다. 브라우저가 필요한 친구가 모두를 도울 수 있기를 바랍니다. Microsoft Edge 브라우저를 엽니다. 아래와 같은 페이지가 보입니다. 오른쪽 상단에 있는 점 3개 아이콘을 클릭하세요. '설정'을 클릭하세요. 설정 페이지의 왼쪽 열에서 "시작 시"를 클릭하세요. 오른쪽 열의 그림에 표시된 세 지점을 클릭한 다음("새 탭 열기"를 클릭하지 마세요), 편집을 클릭하고 URL을 "0"(또는 기타 의미 없는 숫자)으로 변경하세요. 그런 다음 "저장"을 클릭하세요. 다음으로 '를 선택하세요.

Quark Browser를 사용하면 중복 파일을 필터링하는 기능이 있는데, 이 기능을 활성화하는 방법에 대해 소개합니다. 1. 먼저 휴대폰에서 "Quark Browser"를 클릭하여 인터페이스로 들어간 다음 페이지 중간에 있는 옵션에서 "Quark Network Disk"를 클릭하고 선택하여 열고 들어갑니다. 2. 아래 그림과 같이 Quark 네트워크 디스크 인터페이스 하단에서 "백업 설정"을 찾아 클릭하여 엽니다. 3. 다음으로 입력한 페이지에 "중복 파일 필터링"이 있습니다. 그 뒤에 표시되는 스위치 버튼이 있습니다. 이 기능을 켜려면 원형 슬라이더를 클릭하고 색상으로 설정하세요. 파일을 계속 백업하면 네트워크 디스크 용량을 절약하기 위해 중복된 파일을 건너뜁니다.

PHP 함수를 사용하여 데이터를 검색하고 필터링하는 방법은 무엇입니까? PHP를 사용하여 개발하는 과정에서 데이터를 검색하고 필터링해야 하는 경우가 종종 있습니다. PHP는 이러한 작업을 수행하는 데 도움이 되는 다양한 기능과 메서드를 제공합니다. 이 기사에서는 데이터를 효율적으로 검색하고 필터링하는 데 도움이 되는 몇 가지 일반적으로 사용되는 PHP 함수 및 기술을 소개합니다. 문자열 검색 PHP에서 일반적으로 사용되는 문자열 검색 함수는 strpos()와 strstr()입니다. strpos()는 문자열에서 특정 하위 문자열의 위치를 찾는 데 사용됩니다. 존재하는 경우 이를 반환합니다.

Python은 XML 데이터 필터링 및 필터링을 구현합니다. XML(eXtensibleMarkupLanguage)은 데이터를 저장하고 전송하는 데 사용되는 마크업 언어로, 유연하고 확장 가능하며 종종 서로 다른 시스템 간의 데이터 교환에 사용됩니다. XML 데이터를 처리할 때 필요한 정보를 추출하기 위해 필터링하고 필터링해야 하는 경우가 많습니다. 이 기사에서는 Python을 사용하여 XML 데이터를 필터링하고 필터링하는 방법을 소개합니다. 필수 모듈을 가져옵니다. 시작하기 전에

CheatEngine은 게임의 메모리를 편집하고 수정할 수 있는 게임 편집기입니다. 그러나 기본 언어는 중국어가 아니므로 많은 친구들에게 불편을 줍니다. 그렇다면 CheatEngine에서 중국어를 설정하는 방법은 무엇입니까? 오늘은 에디터가 CheatEngine에서 중국어를 설정하는 방법에 대해 자세히 소개하겠습니다. 도움이 되셨으면 좋겠습니다. 설정 방법 1: 1. 두 번 클릭하여 소프트웨어를 열고 왼쪽 상단에 있는 "편집"을 클릭합니다. 2. 그런 다음 아래 옵션 목록에서 "설정"을 클릭하세요. 3. 열리는 창의 왼쪽 열에서 "언어"를 클릭하세요.

PHP 및 PHPMAILER: 메일 전송 자동 필터링을 구현하는 방법은 무엇입니까? 현대사회에서 이메일은 사람들이 소통하는 중요한 수단 중 하나가 되었습니다. 그러나 이메일의 대중화와 확산으로 인해 스팸의 양도 폭발적으로 증가하는 추세를 보이고 있습니다. 스팸 이메일은 사용자의 시간과 네트워크 리소스를 낭비할 뿐만 아니라 바이러스 및 피싱 행위를 가져올 수도 있습니다. 따라서 이메일 발송 기능을 개발할 때 스팸 자동 필터링 기능을 추가하는 것이 중요해집니다. 이 기사에서는 PHP와 PHPMai를 사용하는 방법을 소개합니다.

PHP 데이터 필터링: 날짜 및 시간 입력 처리 개요: 웹 애플리케이션을 개발할 때 사용자가 입력한 날짜 및 시간 데이터를 처리해야 하는 경우가 많습니다. 사용자 입력에는 다양한 형식과 오류가 포함될 수 있으므로 데이터의 정확성과 보안을 보장하려면 효과적인 데이터 필터링 및 검증이 필요합니다. 이 문서에서는 PHP를 사용하여 날짜 및 시간 입력을 처리하는 방법을 설명하고 해당 코드 예제를 제공합니다. 필터링 및 유효성 검사 원칙: 날짜 및 시간 입력을 처리하기 전에 먼저 해당 필터링 및 유효성 검사 원칙을 결정해야 합니다. 다음은 몇 가지 일반적인 사항입니다.
