1. Две и более одинаковых цифр в одной колонке по вертикали (1-1-1-1, 5-5-5, 17-17, 23-23-23) - помещаем в одно общее множество: 1 5 17 23.
2. Убираем все сочетания, которые содержат любые 3 цифры из общего множества.
3. Остаются только уникальные строки (1 5 22): именно уникальные сочетания. Их просто добавляем отдельно.
В базе данных, создайте рядом колонку и заполните её заранее, вытащив парт-номер из строки. /(?:[0-9A-Z-]+[-]{0,1}){8}/u
Затем, просто выполняйте поиск по этой колонке.
Можно создать триггер, который будет заполнять эту колонку автоматически при добавлении новых товаров.
$re = '/\S{1}/su';
$str = ' But I must explain to you how all this mistaken';
preg_match($re, $str, $matches, PREG_OFFSET_CAPTURE, 0);
// Print the entire match result
var_dump($matches);
Можно, но иногда точное вычисление ошибки на каждой итерации сравнимо с созданием ещё одной параллельной нейросети или аналитической системы.
Поэтому, если результат >90% - считают: "И так сойдёт!"... :((
Кстати, если изначально правильно построить мат.модель НС - можно вообще исключить появление ошибок.
Собирайте свойства каждого объекта (свойства тегов, имена классов, стили и т.д.) и его окружение: все объекты той же ноды, где находится текущий объект, цепочку всех родительских нод (xPath), и "дерево" всех вложенных нод.
И так - по каждому.
По количеству совпадений свойств/путей нод И их несовпадений - можно крайне точно определить: на какой предыдущий объект похож текущий.
Т.е. банально по "весам" метрик можно выдавать крайне точное заключение о том, как был изменён конкретный объект относительно предыдущего кода html.
Проверьте просто вывод данных из БД.
Проверьте строку в БД.
Проверьте, что везде UTF-8: кодировка скрипта, сайта, страницы, база, таблица, поле таблицы.
Лучше так, чтобы всё было модульно и при необходимости использования одинакового функционала, исходный код логики использовался всегда только однократно. Нужно разработать общий вид архитектуры в виде схемы вложенных блоков и связей между ними. А уже только после этого - кодировать этот "сборщик".