2013-08-29 6 views
2

아래에 script은 내 단어 필터 (배열)에있는 단어를 감지하고 string이 깨끗한 지 여부를 확인합니다.문자열에 배열의 단어가 포함되어 있는지 확인하십시오.

단어가 공백과 함께 사용되는 경우 아래에서 잘 작동합니다. 그러나 ifiwritesomething은 공백없이 감지되지 않습니다.

어떻게하면 단어 대신 전체 문자열을 검색 할 수 있습니까? explode 기능을 제거하려고 시도했지만 오류가 발생했습니다 ...

$string = 'goodmorningnoobs'; 
$array = array("idiot","noob"); 
if(0 == count(array_intersect(array_map('strtolower', explode(' ', $string)), $array))){ 

echo"clean"; 

} else { 

echo "unclean"; 

} 

아무도 도와 줄 수 있습니까?

+0

단어 필터가 너무 clbutty입니다. –

+0

가치가있는 것보다 더 번거롭지 않습니까? 당신은 잘못된 긍정에 빠지게 될 것입니다. –

+0

대신에 자신의 글을 쓰는 대신 불경스런 말투 검색을 해보십시오. http://banbuilder.com/에서 이름을 찾으십시오. – jeff

답변

3
$clean = true; 

foreach ($array as $word) { 
    if (stripos($string, $word) !== false) { 
     $clean = false; 
     break; 
    } 
} 

echo $clean ? 'clean' : 'unclean'; 
1

어때요?

$hasWords = preg_match('/'. implode('|', $words) .'/', $string); 

echo $hasWords ? 'unclean' : 'clean'; 
+0

아니요. '$ words'의 요소에 정규식에서 특별한 의미가있는 문자가 포함되어 있으면이 작업이 실패합니다. –

관련 문제