이 코드를 사용하면 먼저 전체 단어 파일을 배열로 처리 한 다음 파일에서 해당 단어에 대해 전달 된 문자열을 검사해야합니다. 일치하는 경우 *로 대체하십시오. PHP : 배열 to 파일 검사 및 바꾸기
wordalex
wordjordan
wordjohn
....
불행히도 내가 전달 된 문장은 내가 예상하는 방식으로 필터링되지 않습니다
파일
은 같은 것입니다. 실제로 아무 일도 일어나지 않습니다. 주어진 코드를보고 도움을 주시겠습니까?$comment = "the wordalex if this doesn't get caught!";
$filterWords = file('badwords.txt', FILE_IGNORE_NEW_LINES);
//print_r($filterWords);
$textToPrint = filterwords($comment,$filterWords);
echo $textToPrint;
function filterwords($text, $filterArray){
$filterCount = sizeof($filterWords);
for($i=0; $i<$filterCount; $i++){
$text = preg_replace('/\b'.$filterWords[$i].'\b/ie',"str_repeat('*',strlen('$0'))",$text);
}
return $text;
}
원본 문장에는 실제 단어가 있지만 게시 목적으로는 제거됩니다. 빈 줄을 무시하고
은$filterWords
당신에게
감사합니다. 작동하지만 ... 일치하는 정규식을 수행하지 않습니다. 그래서 세계적인 클래스를 작성하면 cl ***이됩니다. 나는 그들이 그들 자신이 아닌 전체 단어의 일부일 때 그 단어들을 무시하기를 원한다. –
단어 일치 만하기 위해'preg_replace()'로 편집했다. – uzyn
다시 preg과 동일한 오류가 발생합니다. 어떤 방식 으로든 이것은 uzyn으로 분류 될 수 있습니까? 노력을 정말 감사드립니다
경고 : preg_replace() [function.preg-replace] : 컴파일 실패 : 오프셋 2에서 반복 할 수 없음 –