php – Find words in the text that are in the database

Question:

Hello. There is a slovo table in the slovo , its structure is:

id - auto_increment 
name - само слово( уникальный )

There is a variable: $ text , which contains some text.

The slovo table has an entry: id = 1, name = Apple, id = 2, name = tree

$text = "В корзине лежит яблоко. В поле стоит дерево.";

Question: how to determine if a variable contains words that are in the slovo table, and if there are, then select these words in <span id="id_slovo">слово</span> , where id_slovo is the id value for this word from base.

PS Considering that there may be phrases.

I would be very grateful for any useful information.

Answer:

//Сначала нужно найти все слова, бьем фразу в массив по пробелам

$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, "<span id='$wordId'>$word</span>", $text);
   }

}
Scroll to Top