2009-12-16 11 views

답변

6

당신은 정규 표현식으로 BADWORDS의 배열을 내파하고는 건초 더미에 일치하는 경우 볼 수 내 말은 다음과 같습니다 말한다. 또는 단순히 배열을 순환하여 각 단어를 개별적으로 확인할 수 있습니다. 코멘트에서

:

$re = "/(" . implode("|", $showstopper) . ")/"; // '/(badword1|badword2)/' 
if (preg_match($re, $yourmouth) > 0) { die("foulmouth"); } 
+2

$ re = "/ (". implode ("|", $ showstopper). ") /"; if (preg_match ($ re, $ yourmouth)> 0) {die ("foulmouth"); } –

1

와 in_array()는 당신은 foreachpreg_match 접근 대 기준이로 할 수 있습니다 당신의 친구

$yourmouth_array = explode(' ',$yourmouth); 
    foreach($yourmouth_array as $key=>$w){ 
     if (in_array($w,$showstopper){ 
     // stop the show, like, replace that element with '***' 
     $yourmouth_array[$key]= '***'; 
     } 
    } 
$yourmouth = implode(' ',$yourmouth_array); 
+0

-1, strpos() 및 str_replace()는이 경우 더 나은 친구입니다. –

1

입니다.

$showstopper = array('badword1', 'badword2', 'badword3', 'badword4'); 
$yourmouth = "im gonna badword3 you up"; 

$check = str_replace($showstopper, '****', $yourmouth, $count); 
if($count > 0) { 
    //stop the show 
} 
1

빠른 해결책은 배열을 반복 할 필요가 없으므로 키를 확인하는 것입니다. 그러나 나쁜 단어 목록을 수정해야합니다.

$showstopper = array('badword1' => 1, 'badword2' => 1, 'badword3' => 1, 'badword4' => 1); 
$yourmouth = "im gonna badword3 you up"; 

// split words on space 
$words = explode(' ', $yourmouth); 
foreach($words as $word) { 
    // filter extraneous characters out of the word 
    $word = preg_replace('/[^A-Za-z0-9]*/', '', $word); 
    // check for bad word match 
    if (isset($showstopper[$word])) { 
     die('game over'); 
    } 
} 

preg_replace이다 사용자가 bad_word3 뭔가를 입력하여 필터를 남용하지 않습니다 보장합니다. 또한 배열 키 확인이 폭탄을 막지 않도록합니다.

0

당신이 확인하고 나쁜 단어의 배열을 반환()

$showstopper = array(badword1, badword2, badword3, badword4); 
$yourmouth = "im gonna badword3 you up badword1"; 

function badWordCheck($var) { 

    global $yourmouth; 
    if (strpos($yourmouth, $var)) { 
     return true; 
    } 

} 

print_r(array_filter($showstopper, 'badWordCheck')); 

array_filter을 사용 하였다 나쁜 단어를 얻을이 있지만을 heres 방법을해야 할 이유를 모르겠 (개수 만약 그렇다면) 그것의 0 nothign 나쁜했다

+0

나는 잘 모르겠다;) – Jalal

관련 문제