🔎

Пошук схожих слів на PHP

У мене є масив слів, і коли користувач вводить своє, потрібно знайти всі схожі. Допоможіть написати скрипт на PHP.
php
1 відповідь
  • Олег
    Ось простий PHP-скрипт для пошуку слів, схожих на задане слово, використовуючи подібність рядків (функція similar_text) або редагувальну відстань Левенштейна (levenshtein).

    Припустимо, у вас є масив слів, і ви хочете знайти ті, які максимально схожі на вхідне слово.
    <?php
    // Масив слів для пошуку
    $words = ["apple", "apply", "ape", "maple", "snapple", "pineapple", "ample"];

    // Слово, з яким порівнюємо
    $search = "apple";

    // Максимальна допустима відстань Левенштейна для схожості
    $maxDistance = 3;

    $similarWords = [];

    foreach ($words as $word) {
    // Обчислюємо відстань Левенштейна між пошуковим словом і поточним словом
    $distance = levenshtein($search, $word);

    // Якщо відстань менша або рівна maxDistance, додаємо у результати
    if ($distance <= $maxDistance) {
    $similarWords[$word] = $distance;
    }
    }

    // Сортуємо за зростанням відстані (чим менше — тим схожіше)
    asort($similarWords);

    // Виводимо результати
    echo "Слова, схожі на '{$search}':\n";
    foreach ($similarWords as $word => $distance) {
    echo "- {$word} (відстань: {$distance})\n";
    }
    ?>
    Як це працює:

    - Скрипт порівнює кожне слово з масиву з пошуковим словом.

    - Обчислює відстань Левенштейна — кількість змін, які потрібно зробити, щоб перетворити одне слово в інше.

    - Виводить слова, які відрізняються не більше ніж на $maxDistance символів.