поиск в explode и in_Array не работает

ОК здесь кодовый код здесь http://codepad.org/ZQz0Kn3R

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 . Но когда я использую его, слова в первом массиве $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 . Что-то не так в коде?

Проблема состоит в том, что в $filter_array есть пробелы. Или:

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

Или

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

http://codepad.viper-7.com/BrZ9Rm

вам нужно будет пройти через отделку:

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