Как найти ближайшую строку к заданной?

Ссылка скопирована
2 ответов

На сайте нужно настроить 404 страницу, а в частности такую фичу, что пользователю при опечатке предлагается похожая на запрашиваемую страница. Например есть массив (блог, новости, контакты) пользователь обращается к странице онтакты, а ему предлагается перейти на контакты.

Дополнительно:

А как вы пытались решить свой вопрос?

  • https://ru.wikipedia.org/wiki/%D0%A0%D0%B0%D1%81%D...
  • Хранить в БД URL'ы страниц и при возникновении 404-й делать в БД запрос на извлечение похожих на запрошенный. В случае использования PostgreSQL могут помочь модули pg_trgm для поиска на основе триграмм и fuzzystrmatch для поиска на основе расстояния Левенштейна или по созвучности.

    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Артём Dev Ответ

    Для поиска ближайшей строки к заданной вам понадобится использовать алгоритм поиска ближайшего совпадения. Ниже представлен пример кода на языке PHP, который демонстрирует этот алгоритм:

    function findNearestString($searchString, $array) {
        $closestString = null;
        $minDistance = PHP_INT_MAX;
     
        foreach ($array as $string) {
            similar_text($searchString, $string, $similarity);
     
            if ($similarity > 0 && $similarity < $minDistance) {
                $minDistance = $similarity;
                $closestString = $string;
            }
        }
     
        return $closestString;
    }
     
    $searchString = "apple";
    $array = ["banana", "cherry", "grape", "lemon", "orange"];
     
    $nearestString = findNearestString($searchString, $array);
     
    echo "The nearest string to '$searchString' is '$nearestString'.";

    function findNearestString($searchString, $array) { $closestString = null; $minDistance = PHP_INT_MAX; foreach ($array as $string) { similar_text($searchString, $string, $similarity); if ($similarity > 0 && $similarity < $minDistance) { $minDistance = $similarity; $closestString = $string; } } return $closestString; } $searchString = "apple"; $array = ["banana", "cherry", "grape", "lemon", "orange"]; $nearestString = findNearestString($searchString, $array); echo "The nearest string to '$searchString' is '$nearestString'.";

    В данном примере функция `findNearestString` принимает искомую строку и массив строк, и возвращает строку из массива, наиболее близкую к искомой. Для вычисления близости строк используется функция `similar_text`, которая вычисляет сходство между двумя строками в процентах.

    Вы можете вызвать эту функцию, передав в нее искомую строку и массив строк, и получить результат - ближайшую строку к заданной. Не забудьте, что данный алгоритм может быть доработан или заменен на другой, в зависимости от ваших конкретных потребностей.

    Другие ответы (1) Ответить на вопрос
    Роман IT

    Для того чтобы найти ближайшую строку к заданной в PHP, можно воспользоваться функцией array_search(). Эта функция ищет заданное значение в массиве и возвращает ключ этого значения.

    Прежде всего, необходимо преобразовать строки в массив, где каждая строка будет элементом этого массива. Это можно сделать с помощью функции explode().

    Например, предположим, у нас есть текстовая переменная $text, содержащая несколько строк. Мы хотим найти ближайшую строку к строке "example".

    ```php
    $text = "This is an example of a text string

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно