ОК здесь кодовый код здесь 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);