2011-02-18 2 views
0

OK 작동하지 여기 http://codepad.org/ZQz0Kn3R폭발와 in_array 됨 여기

function processContent($content, $min_count = 2, $exclude_list = array()) { 
    $wordsTmp = explode(' ', str_replace(array('(', ')', '[', ']', '{', '}', "'", '"', ':', ',', '.', '?'), ' ', $content)); 
    $words = array(); 
$wordsTmp2 = array(); 
$omit = array('and', 'or', 'but', 'yet', 'for', 'not', 'so', '&', '&', '+', '=', '-', '*', '/', '^', '_', '\\', '|'); 
if(count($exclude_list)>0){ 
    $omit = array_merge($omit, $exclude_list); 
} 
foreach ($wordsTmp as $wordTmp) { 
    if (!empty($wordTmp) && !in_array($wordTmp, $omit) && strlen($wordTmp) >= $min_count) { 
      $words[] = $wordTmp; 
    } 
} 
return $words; 
} 

OK이 $omit 변수로 필터링하여 단어의 배열을 반환한다 내 함수 코드 codepad이다. 그러나 내가 그것을 사용할 때 처음에는 $omit 배열의 단어 만 필터링되고 $exclude_list에서 병합 된 두 번째는 필터링되지 않습니다.

$filter_array = explode("\n", words list separated by \n new line here); 
print_r(processContent('String gere for filtering', $min_word_length, $filter_array)); 

변수 $filter_array도 변수 생략 통합 된 exclude_list에 전달되지만 반환 값 필터링되지 않습니다

나는 나의 기능이 방법을 사용합니다. 처음에만 $omit 값이 필터링됩니다. 코드에 문제가 있습니까?

+0

http://codepad.org/lkg9JQqJ이 codepad를 참조하십시오. 동일한 오류 – Yalamber

+0

귀하의 코드 패드 예제는 배열 ('of, for') 대신 배열 ('of', 'for')이어야합니다. 첫 번째 코드는 –

+0

입니다. http://codepad.org/e4lPjHFC – Yalamber

답변

1

$filter_array에 공백이 있기 때문에 문제가 있습니다. 다음 중 하나를

$filter_array = array_map(function($el) { return trim($el); }, $filter_array); 

또는

foreach ($filter_array as &$element) { 
    $element = trim($element); 
}