Доброго всем времени суток! нужна помощь от гуру! нужно сравнить 2 строки: например Код (Text): Eagle F1 Asymmetric xl должна равняться строке Код (Text): F1 eagle Asymmetric xl - здесь слова переменены местами, второе слово с маленькой буквы и перед xl один пробел вместо 3-х но не может равняться строке Код (Text): F1 eagle Asymmetric - здесь нет xl
Разбить на массив по пробелам. Либо explode, либо preg_split, что больше подходит. Отсортировать массивы. Сравнить массивы (это достаточно просто). Ну или как-то сравнить без сортировки даже можно (возможно)
я про это тоже думал, но у меня таким образом будет сравниваться за раз цикл из порядка 1000-2000 записей. насколько такой подход мне подходит и как сильно нагрузит хостинг-провайдера я незнаю... А нет ли какого метода чтобы убрать вообще все пробелы, отсортировать строки по алфавиту и их сохранить?
preg, но чтобы отсортировть по алфавиту придется сделать массив. Думаю факт массива не так сильно нагрузит сервер, нежели факт проверки 3000 строк. Возможно следует пересмотреть постановку задачи, которая привела вас к такому решению. Может быть решено с помощью СУБД.
еще может быть случай когда запись имеете вид Код (Text): bravuris 2 а строка с которой идет сравнение Код (Text): bravuris2 и тут уже разбивка сроки на массив не поможет
и почему-же в бред? вы наверное никогда не делали импорт в базу, когда обменный файл приходит черт знает какой и не понятно по каким правилам собран... а когда этих файлов еще 10 разных от различных фирм...
darkgod Компьютер не может провести такой анализ, который не может провести сам человек. И наоборот. Если есть строки: Код (Text): bat34 alpha и строка Код (Text): bat 34 alpha да ещё Код (Text): bat3 4alpha То при таком раскладе для человека эта задача становится неясной, потому что тут даже по словарю подбор не сделать. Если найти какую-то логику, то можно написать свой синтаксический анализатор, который будет ошибаться на таких строчках хотя бы через раз. Есть, кстати, определение алгоритма, где четко сказано, что это КОНКРЕТНЫЙ порядок действий приводящий к КОНКРЕТНЫМ результатам. Конкретного порядка тут нет и быть не может, значит задача либо не решаема, либо может быть приведена к решаемой путем построения КОНКРЕТНЫХ действий.