Страницы

Поиск по вопросам

среда, 3 октября 2018 г.

Найти в тексте слова, которые есть в базе данных

Здравствуйте. В базе данных есть таблица slovo, ее структура:
id - auto_increment name - само слово( уникальный )
Есть переменная: $text, которая содержит в себе некий текст.
В таблице slovo есть запись: id = 1, name = Яблоко , id = 2, name = дерево
$text = "В корзине лежит яблоко. В поле стоит дерево.";
Вопрос: каким образом определить, есть ли в переменной слова, которые находятся в таблице slovo, и если есть, то эти слова выделить в слово , где id_slovo - значение id для этого слова из базы.
P.S. Учитывая то, что может быть и словосочетания.
Буду очень благодарен за любую полезную информацию.


Ответ

//Сначала нужно найти все слова, бьем фразу в массив по пробелам
$words = explode(' ', $text);
//Затем проверяем каждое слово:
foreach($words as $word) {
$word = trim($word); //убираем пробелы
//Проверяем в базе, любимым адаптером выполняя запрос //Само собой никто не мешает заменить ILIKE на LIKE или = $wordId = $msSql->fetchOne("SELECT id FROM slove WHERE name ILIKE '{$word}'");
//Если в базе такое слово есть, то заменяем его в тексте на нужный span if (!empty($wordId)) { $text = str_replace($word, "$word", $text); }
}

Комментариев нет:

Отправить комментарий