![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Mafiosi |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 23.2.2012 Где: Харьков Репутация: нет Всего: нет |
1. есть csv файл в котором находятся номера автозапчастей.
2. Есть форма поиска, в которую пользователь вбивает искомый номер 3. Есть скрипт, который проверяет то что ввёл пользователь с тем что хранится в файле csv и выдаёт результат: есть искомая запчасть или нет. Т.к. пользователь - это такая штука, которая может вбивать в поисковый запрос номера деталей без всякого форматирования(пробелы, точки, тире и т.д.), то пришлось в скрипте использовать
для того чтоб по шаблону подстроить данные введённые пользователем под то что храниться в файле. Как сделать это без регулярных выражений я пока не врублюсь, конечно посмотрев на мой скрипт, можно упасть в обморок от того сколько там регулярок Вобщем: 1. Хотел бы конечно каким-то образом оптимизировать скрипт с моими регулярками, может вообще от них избавится.... 2. Или подскажите что в нём не хватает чтоб искало по всем шаблонам, я не пойму... находит по одному шаблону, далее передаёт на сравнение и всё - скрипт большге не сравнивает,а хотелось бы чтобы он искал все похожие значения и подставлял по очереди в форму сравнения найденый результат, а номера есть похожие, только отличаются например пробелами. Вот пример (2 339 303 222 и 1864 528 441) - тут одинаковое количество цифр, но пробелы расположены по разному(это разные фирмы запчастей) и в файле они так хранятся и выводить на экран надо также - пользователь вводить может эти номера не взирая на пробелы вообще. Вот я и расставляю пробелы с помощью preg_replace так как надо и полученое значение сравниваю со значением в файле csv. Не знаю правильно ли всё разъяснил... Но вот кусок кода что меня мучает:
извините за большой код, но хотел показать хоть пару примеров регулярки(это далеко не все... их штук 40 разных). Пришлось в коментариях к форме поиска написать чтоб пользователь перед определёнными номерами вводил начальные идентификаторы(SW, INA, LUK) чтоб скрипт понял по какой регулярке ему сравнивать, может это не правильно..!?.... направте на путь Я думал может удалять все лишние символы с файла и с формы поиска, думаю так будет проще сделать поиск не взирая на пробелы и точки и тире, но как сделать чтоб вывод результата был красивый, т.е. изначально хранящийся в файле.. откуда я его буду брать если поудаляю всё кроме цифр? нашёл тему очень похожую на мою ситуацию, но там отсутствует "фактор свободного поведения пользователя" http://forum.vingrad.ru/topic-27376.html у меня отличается. |
||||
|
|||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
можешь привести пример файла и пример запроса?
Добавлено @ 14:24 вот это-то как раз просто: сравниваешь "урезанные" варианты, а выводишь - нормальный, полноценный
как-то так |
|||
|
||||
| Mafiosi |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 23.2.2012 Где: Харьков Репутация: нет Всего: нет |
Вот кусок из файла
а вот такой запрос могут вводить пользователи, по каждой позиции пример 06B129717A 623309700 713420800 55496 0850290000 13046029722 или бывает ставят некоторые символы, но не все... пользователя тяжело заставить писать так как в каталоге написан номер |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
угу, понятно.
ну, тогда совет прежний: сравнивай нормализованное, выводи - как есть. |
|||
|
||||
| Mafiosi |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 23.2.2012 Где: Харьков Репутация: нет Всего: нет |
Fatal error: Function name must be a string in
вот такое пишет |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
closure только в 5.3 ввели.
ну, ты по коду понимаешь, что где происходит? отдельно отобрали и вывели исходные, не измененные строки. |
|||
|
||||
| Mafiosi |
|
||||||
![]() Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 23.2.2012 Где: Харьков Репутация: нет Всего: нет |
тут не пойму что такое '0'
тут почему function($item) почему не function($phone) и конструкция use ($search, $normalize) не пойму как работает
а тут тоже почему $item а не $phone |
||||||
|
|||||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
closures in PHP
изивини, похоже, я тебя запутал. давай, забудем и сделаем по-другому:
Добавлено через 2 минуты и 21 секунду вырезать лидирующий ноль. некоторые у нас его опускают при записи: "096-333-22-11" превращается в "96-333-22-11". реально встречал потому решил для демонстрации поиска тоже его вырезать, но именно если он в первой позиции стоит. |
|||
|
||||
| Mafiosi |
|
||||||
![]() Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 23.2.2012 Где: Харьков Репутация: нет Всего: нет |
ноль как раз мне вырезать не надо, я сделал так 'EVR' - это забывают часто или пишут вместо него RU
как в эту функцию добавить ещё исключений немного(более одного) или чтоб заменяло например RU на EVR если в поиске вписали такое пробовал так: добавлял строку в функцию... но почему-то не работает
регулярку поставил \W т.к. у меня кроме пробелов есть ещё точки и тире...., но и буквы есть в номерах - так что буквы удалять нельзя и у меня в скрипте поиск был с помощью этой функции strpos
она находит вхождение части символов в строку, т.е. человек может вписать в поле поиска номер 8L0601165D вместо 8L0 601 165 D 7ZJ и найдёт это значение... не пойму куда прикрутить теперь эту функцию. А так скрипт ваш работает очень даже хорошо!!! |
||||||
|
|||||||
| Mafiosi |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 23.2.2012 Где: Харьков Репутация: нет Всего: нет |
ааа!!! сделал! работает. вот так:
ltrim убрал за ненадобностью. и вместо == сделал strstr
спасибо за помощь!!!!!! Это сообщение отредактировал(а) Mafiosi - 25.2.2012, 15:37 |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |