Помогите вывести значения из таблицы. перед этим сравнив их. Допустим есть предложение:
"сегодня сияло прекрасное EX_WORD, а вечером будет CD_WORD"
и мне нужно вывести эти слова (Солнце, Вечером) из таблицы в предложение.
!!!То есть предложение после вывода должно выглядеть таким образом: "сегодня стояло прекрасное СОЛНЦЕ, а вечером будет ДОЖДЬ."
Таблица выглядит таким образом:
-----------------------------------
id | name | text
-------------------------------------
1 | EX_WORD | солнце
2 | CD_WORD | дождь
В таблице около 4000 строк (я показал на примере только 2 строки)
предложений тоже 4000 и куждого предложения свои значения (не тольо солнце и дождь)
Вот одно из решений
<?php
$arrayFromBd = array('солнце', 'дождь');
$str = "сегодня стояло прекрасное СОЛНЦЕ, а вечером будет ДОЖДЬ.";
$strLower = mb_strtolower($str);
$matchWords = array_intersect(explode(' ', preg_replace('/[.,]/', '', $strLower)), $arrayFromBd);
$ind = 0;
foreach($matchWords as $val) {
$str = substr_replace($str, "<b>".mb_strtoupper($val)."<b>", strpos($strLower, $val)+6*$ind) .
substr($str, strpos($strLower, $val)+strlen($val)+6*$ind);
$ind++;
}
echo $str;
// сегодня стояло прекрасное <b>СОЛНЦЕ<b>, а вечером будет <b>ДОЖДЬ<b>.
Или же сразу вытащить результат пример для запроса в бд
SELECT * FROM MyTable WHERE
Column1 LIKE '%сегодня%'
OR Column1 LIKE '%стояло%'
OR Column1 LIKE '%прекрасное%' ...
Также запрос с in
SELECT * FROM MyTable WHERE name in ('сегодня','стояло','прекрасное')
И вот про то что я комментировал
Сложный алгоритм для маленького массива ~1000
CPU times: user 4.56 ms, sys: 136 µs, total: 4.7 ms
Wall time: 4.09 ms
Простой алгоритм для маленького массива ~1000
CPU times: user 263 µs, sys: 63 µs, total: 326 µs
Wall time: 333 µs
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости