Здравствуйте. В базе данных есть таблица 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);
}
}
Комментариев нет:
Отправить комментарий