2012-11-08 2 views
0

아래 코드는 잘 작동합니다.php 맹세 코드가 제대로 작동하지 않습니다.

$swearWords = file("blacklist.txt"); 
foreach ($swearWords as $naughty) 
{ 
    $post = str_ireplace(rtrim($naughty), "<b><i>(oops)</i></b>", $post); 
} 

문제는 즉시 "스컨 소프"에 대한 그대 욕설 포함 된 단어 ..

함께 그 안에 나쁜 단어가 있습니다. 이 코드는 그것을 S (oops) horpe로 변경합니다.

어떻게 해결할 수 있습니까? 내가

+0

파일을 읽은 후 어떻게 출력됩니까? '$ naughty '에 무엇이 들어 있나? 말로 된 단어인가요? –

+0

예 한 줄에 1 단어 – Lee

답변

2

당신은 대체 할 수있는이 공백 서식을 제거, 그래서 확인됩니다

참고이 먼저 상황에 맞는 (당신은 탭 문자 또는 여러 개의 연속 공간에 대한 상관이야?) 당신이 말을 무시한 preg_replacestr_replace() 선행 및/또는 후행 문자, 그래서 혼자서는 서있는 경우에 단어 만 교체 맹세 : 여전히 "aCUNT"와 같은 단어를 맹세 수 있다는

$post = "some Scunthorpe text"; 
$newpost = $post; 
$swearWords = file("blacklist.txt"); 
foreach ($swearWords as $naughty) 
{ 
    $naughty = preg_quote($naughty, '/'); 
    $newpost = preg_replace("/([^a-z]+{$naughty}[^a-z]*|[^a-z]+{$naughty}[^a-z]+)/i", "<b><i>(oops)</i></b>", $newpost); 
} 
if ($newpost) $post = $newpost; 
else echo "an error occured during regex replacement"; 

주, "soFUCKINGstupid"... 난 몰라 그걸 어떻게 처리 할 수 ​​있겠 어.

+0

그러나 공백이나 맹세로 맹세 단어를 사용할 수 있습니다. 앞뒤로 – Lee

+0

나는 맹세코를 피할 수 있었고, 나는 맹목적으로 맹목적으로 말해서 하나의 preg_replace 만 가질 수 있었다. 좀 더 효과적입니다;) –

+0

내 메서드가 처리하지만 잘못된 단어가 포함되어 있으면 잠재적으로 일반적인 단어를 제거합니다. – deed02392

0

해야합니까이 그것을 할 정도면 :

$swearWords = file("blacklist.txt"); 
$post_words = preg_split("/\s+/", $post); 

foreach ($swearWords as $naughty) 
{ 
    foreach($post_words as &$word) 
    { 
     if(stripos($word, $naughty) !== false) 
     { 
      $word = "<b><i>(oops)</i></b>"; 
     } 
    } 
} 
$post = implode(' ', $post_words); 

그래서 무슨 일이 일어나고 있는지? 그것은 당신의 맹세를 불러 일으킨 다음,이를 통해 반복됩니다. 그런 다음 게시물의 모든 단어를 반복하고 현재 맹세 단어가 현재 보인 단어에 있는지 확인합니다. 그럴 경우 제거하여 제거합니다.

+0

공백, 줄 바꿈, 들여 쓰기를 제거하여 게시물의 모든 요소/단어 배열을 남깁니다. 결과를 텍스트 (예 :'implode ("", $ post_words))로 다시 어셈블하더라도 모든 공백 형식을 깨뜨릴 수 있습니다. – Kaii

1

"거짓 긍정"을 붙잡을 때 맹세코와 모독 필터가 악명 높습니다.

사전 용어로 이러한 항목을 처리하는 가장 쉬운 방법은 블랙리스트와 비슷한 방식으로 허용 목록을 사용하는 것입니다. 일치를 포함하지만 본질적으로 인 단어 목록은이 허용됩니다.

이 글을 읽는 것이 가치가 있습니다 : How do you implement a good profanity filter이 프로와 단점을 자세히 설명합니다.

+0

+1 링크 – Kaii

관련 문제