Всем привет! Жутко подтупливаю, есть функция поиска слов в тексте, произвожу поиск по циклу, после если слова нашлись, мне нужно получить сумму всех найденных слов, но что-то я не могу понять как это сделать. Код снизу, вопрос как суммировать $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;
}
}
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости