Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > PHP: Тексты > Регулярка для списка. |
Автор: capitan 27.2.2013, 15:00 | ||||
Друзья, требуется ваша помощь. Что-то я подвис :( Есть html код:
соответственно на выходе нужно получить массив вида:
|
Автор: Gold Dragon 27.2.2013, 18:27 | ||||||
интересная задачка.. ![]() вот только так
вот только ключи наверное всё таки не могут быть на кириллице.. или я путаю Добавлено через 6 минут и 32 секунды я путаю ![]() тогда так
Добавлено через 7 минут и 39 секунд вот что получается
|
Автор: Aliance 27.2.2013, 18:36 |
Я бы попробовал решить с помощью preg_offset_capture и substr / strpos / strlen |
Автор: capitan 27.2.2013, 18:40 |
Gold Dragon, Спасибо огромное!!! Будет время, попробую, может по другому можно. Я пытался уместить все в одну регулярку, почти получилось, но на больших данных скрипт вис :( |
Автор: Gold Dragon 27.2.2013, 18:44 |
я что только не пробовал ![]() в одну регулярку не уместил никак, принципы разные... вот был бы формат XML то без проблем... да и способов куча ты покажи свою регулярку может что в голову придут Добавлено через 1 минуту и 46 секунд Aliance, будет сложнее, да и убираем проблемы пробельных и многобайтовых символов |
Автор: capitan 27.2.2013, 18:52 | ||||
Последнее, после чего все удалил нафиг :(
на больших данный, скрипт тупо отваливается. После этого решил, что в одну врядли получится :( Gold Dragon, Ваш вариант работает отлично! Единственно, я переписал, в стиле, как привык писать сам ![]() Те же шары, только вид сбоку ![]()
|
Автор: Gold Dragon 27.2.2013, 19:41 | ||||
а почему твой тормозит? я вот тут малость твой подправил.. а то чтобы работал твой вариант нужно было бы убрать все переносы и пробелы между тэгами ![]()
Добавлено через 9 минут и 18 секунд нее.. не мой стиль.. я люблю чтобы код сразу читался даже спустя год и два... И не люблю в условиях функции ![]() Добавлено через 11 минут и 58 секунд кстати, а зачем тебе $key если ты его не используешь? ![]()
|
Автор: Gold Dragon 27.2.2013, 20:10 |
тоже предпочитаю foreach, в примере for использовал для другой цели от которой потом отказался, а функция осталась... ![]() Решил тесты провести... foreach оказался примерно в 17 раз быстрее for если массив схожей структуры взять |
Автор: capitan 27.2.2013, 21:00 | ||||
А ты сам попробуй ![]() Этот код парсит страницу, к примеру: http://m.kinopoisk.ru/cast/394375 |
Автор: Gold Dragon 27.2.2013, 21:41 | ||
попробовал ![]()
и ты знаешь, а мой мгновенно всё перегнал ![]() |
Автор: Aliance 28.2.2013, 11:02 | ||
не верю ![]() |
Автор: Gold Dragon 28.2.2013, 13:33 | ||
Aliance, а как поверишь? ![]() в общем странно, дома у меня другие результаты были.. на работе разница увеличилась вот мой тест
Апач 2.2.23 PHP 5.4.8 capitan, статейка старенькая и думаю результаты уже поменялись с выходом новых версий PHP Добавлено через 7 минут и 53 секунды проверил на нескольких компах на работе.. разница 145-185, 17 даже близко не смог получить ![]() |
Автор: Aliance 28.2.2013, 13:41 | ||||||||
вот это
можно заменить на это:
и вот это
на это
Ну и если верить тестам по ссылке выше, нужно все же не просто прогонять цикл, а что-то делать с данными. Например вызывать sprintf. Ну и в целом-то никак не в 17 раз ![]() |
Автор: Gold Dragon 28.2.2013, 13:45 | ||||||
Aliance, ты прав, упустил такой момент как count. Заменил на твоё и разница сократилась до 2,5 ![]() Добавлено через 4 минуты и 47 секунд
добавил
заменил на
|