Поиск похожих фраз

97
26 ноября 2019, 12:30

Меня интересует такой момент. Парсю я к примеру 2 сайта, у них одинаковые категории но по разному написаны.
Например:

1 сайт: Ножи туристические
2 сайт: Туристические ножи

Это одинаковые категории но по другому написаны. Категории все записываются в массив, но перед записью нужно проверить массив на наличие подобного рода вхождений.

Как быть в такой ситуации?

Answer 1

Можно ещё без сортировки массива - переворачивать его элементы:

$str_1 = 'Ножи туристические';
$str_2 = 'Туристические ножи';
var_dump( similar_str($str_1, $str_2) );

function similar_str(... $data)
{
    [$a, $b] = array_map('mb_strtolower', $data);
    $b = join(' ', array_reverse(explode(' ', $b)));
    return $a == $b;
}

UPD: Как выяснилось, вариант с array_reverse() подходит только для пары слов, поэтому я дописал сортировку, как и было предложено в комментариях:

$str_1 = 'Ножи какие-то туристические';
$str_2 = 'Туристические ножи какие-то';
var_dump( similar_str($str_1, $str_2) );

function similar_str(... $data)
{
    [$a, $b] = array_map(function($i){
        $words = explode(' ', mb_strtolower($i));
        sort($words);
        return $words;
    }, $data);
    return $a == $b;
}
READ ALSO
Проблема с выводом таблиц и select

Проблема с выводом таблиц и select

подскажите пожалуйстаЕсть два select, выбираю их и нажимаю - выводит одну таблицу, выбираю ещё другое значение select`a, выводит одну и ещё предыдущую...

129
Ошибка при добавлении товаров Drupal

Ошибка при добавлении товаров Drupal

Обновил ядро Drupal, до версии 764, всё обновилось без происшествий

118
Переход от «preg_replace()» к «preg_replace_callback()»

Переход от «preg_replace()» к «preg_replace_callback()»

Нужна помощь с переписыванием preg_replace в preg_replace_callback:

84
Не выводиться запись из бд типу Varchar

Не выводиться запись из бд типу Varchar

Не выводиться запись из бд типу VarcharОтправляю через AJAX запрос в бд, в ответ получаю пустой запрос, но если сделаю выборку и закоментирую некоторое...

80