Всем привет! Жутко подтупливаю, есть функция поиска слов в тексте, произвожу поиск по циклу, после если слова нашлись, мне нужно получить сумму всех найденных слов, но что-то я не могу понять как это сделать. Код снизу, вопрос как суммировать $result найденных данных?
$url = "В разделе отдельные промышленные металлодекторы интернет-магазина представлено оборудование от ведущих мировых производителей.";
$filt = array ('промышленные','мировых,оборудование');
function txtsearch($url, $filt) {
foreach ($filt as $filter)
{ preg_match_all("/(?<![\w\d])$filter(?![\w\d])/siu", mb_strtolower($url), $result);
echo $result;
}
}
Как я понимаю, надо всего лишь воспользоваться array_count_values для подсчёта.
Ну и сделать косметическую правку в виде implode('|', $filterArr)
.
Пример:
$text = <<<TEXT
В разделе отдельные промышленные промышленные промышленные
металлодекторы интернет-магазина
представлено оборудование от ведущих мировых производителей. супер пупер мировых производителей!
TEXT;
$filterArr = array('промышленные','мировых','оборудование');
preg_match_all("/(?<![\w\d])".implode('|', $filterArr)."(?![\w\d])/siu", mb_strtolower($text), $searchResult);
$filterCountValues = array_count_values($searchResult[0]);
foreach ($filterCountValues as $word => $count) {
echo 'слово "' . $word . '" встретилось ' . $count . ' раз(а) <br/>';
}
В $searchResult[0]
будет массив:
Array (
[0] => промышленные
[1] => промышленные
[2] => промышленные
[3] => оборудование
[4] => мировых
[5] => мировых
)
Вывод:
слово "промышленные" встретилось 3 раз(а)
слово "оборудование" встретилось 1 раз(а)
слово "мировых" встретилось 2 раз(а)
P.S. Возможно нужен вывод количества раз всех слов, даже если они не встречались, тогда цикл такой:
foreach ($filterArr as $word) {
$tpl = 'слово "' . $word . '" встретилось ';
$tpl .= isset($filterCountValues[$word]) ? $filterCountValues[$word] : 0;
$tpl .= ' раз(а) <br/>';
echo $tpl;
}
function txtsearch($url, $filt) {
$count_txtsearch = 0;
foreach ($filt as $filter)
{
preg_match("/(?<![\w\d])$filter(?![\w\d])/siu", mb_strtolower($url), $result);
$count_txt = count($result);
$count_txtsearch+=$count_txt;
}
if ( $count_txtsearch > 0) {
return 1;
} else {
return 0;
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Здравствуйте, есть файл csv, практически все строки парсятся нормально, разделителем выступает |, но есть некоторые строки, которые некорректно...
Здравствуйте, я начал изучать Laravel, не могу никак понять, как мне распределить контроллеры header, footer и подключать их на каждой странице, как...