Я хочу создать метод, который сравнивает два предложения и возвращает слова, которые делают их разными.
например
серые плитки 100 X 200 кухонный пол
серые плитки 300 X 600 кухонный пол
разница составляет 100 x 200 300 x 600
это позволит одному слову (не обязательно, чтобы один персонаж сидел между двумя уникальными словами), хотя, если расстояние превышает один, оно будет вызывать ошибку, говоря, что фразы не являются достаточно похожими, разница может быть найдена в начале / конце / середине текст
после перехода в разные блоги, я нашел аналогичный подход к моей проблеме, используя встроенную функцию php xdiff_string_diff, но проблема в том, что я не могу заставить код работать. Я получил ошибку, говоря, что xdiff_string_diff – неопределенная функция. Кто-нибудь из вас знает, какие расширения должны быть загружены, чтобы сделать эту функцию доступной? Или, если вы можете предложить другой подход, это будет здорово и высоко оценено. 🙂
<?php $old_article = "grey tiles 100 X 200 kitchen flooring"; $new_article = "grey tiles 300 X 600 kitchen flooring" $diff = xdiff_string_diff($old_article, $new_article, 1); if (is_string($diff)) { echo "Differences between two articles:\n"; echo $diff; } ?>
Вам нужно будет установить xdiff
pecl install xdiff
В качестве альтернативы вы можете попробовать использовать array_diff, чтобы найти различия между строками. Разверните их в пространстве, а затем array_diff их:
$a1 = explode(" " , 'grey tiles 100 X 200 kitchen flooring'); $a2 = explode(" ", 'grey tiles 300 X 600 kitchen flooring'); echo join(' ', array_diff($a1, $a2)); // 100 200
Это не поймает X, хотя, поскольку X будет общей частью строки в этом контексте.
На каждой странице руководства каждой функции (или библиотеки) всегда упоминается, поставляется ли она по умолчанию по умолчанию или нет, и из какой версии PHP они начали упаковывать ее в выпуск.
Если это не в выпуске, то упоминается пакет, в котором он находится (либо PECL, либо PEAR).
O на странице его руководства говорится:
PECL xdiff >= 0.2.0
Если вы используете BSD / Solaris / Linux / Mac, все, что вам нужно сделать, это открыть консоль и ввести:
pear install xdiff
Вы можете сравнивать каждого персонажа один за другим, в каждой разнице вы можете увеличить счетчик на единицу. Но это решение не даст вам «300», это даст вам 3.