![]() |
Модераторы: Aliance, skyboy, MoLeX, ksnk |
![]() ![]() ![]() |
|
capitan |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 602 Регистрация: 27.2.2005 Где: Москва Репутация: 1 Всего: 13 |
Друзья, требуется ваша помощь. Что-то я подвис :(
Есть html код:
соответственно на выходе нужно получить массив вида:
|
||||
|
|||||
Gold Dragon |
|
||||||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 1 Всего: 71 |
интересная задачка..
![]() вот только так
вот только ключи наверное всё таки не могут быть на кириллице.. или я путаю Добавлено через 6 минут и 32 секунды я путаю ![]() тогда так
Добавлено через 7 минут и 39 секунд вот что получается
Это сообщение отредактировал(а) Gold Dragon - 27.2.2013, 18:32 -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
||||||
|
|||||||
Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 2 Всего: 137 |
Я бы попробовал решить с помощью preg_offset_capture и substr / strpos / strlen
|
|||
|
||||
capitan |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 602 Регистрация: 27.2.2005 Где: Москва Репутация: 1 Всего: 13 |
Gold Dragon, Спасибо огромное!!! Будет время, попробую, может по другому можно. Я пытался уместить все в одну регулярку, почти получилось, но на больших данных скрипт вис :(
|
|||
|
||||
Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 1 Всего: 71 |
я что только не пробовал
![]() в одну регулярку не уместил никак, принципы разные... вот был бы формат XML то без проблем... да и способов куча ты покажи свою регулярку может что в голову придут Добавлено через 1 минуту и 46 секунд Aliance, будет сложнее, да и убираем проблемы пробельных и многобайтовых символов -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
capitan |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 602 Регистрация: 27.2.2005 Где: Москва Репутация: 1 Всего: 13 |
Последнее, после чего все удалил нафиг :(
на больших данный, скрипт тупо отваливается. После этого решил, что в одну врядли получится :( Gold Dragon, Ваш вариант работает отлично! Единственно, я переписал, в стиле, как привык писать сам ![]() Те же шары, только вид сбоку ![]()
Это сообщение отредактировал(а) capitan - 27.2.2013, 19:10 |
||||
|
|||||
Gold Dragon |
|
||||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 1 Всего: 71 |
а почему твой тормозит?
я вот тут малость твой подправил.. а то чтобы работал твой вариант нужно было бы убрать все переносы и пробелы между тэгами ![]()
Добавлено через 9 минут и 18 секунд нее.. не мой стиль.. я люблю чтобы код сразу читался даже спустя год и два... И не люблю в условиях функции ![]() Добавлено через 11 минут и 58 секунд кстати, а зачем тебе $key если ты его не используешь? ![]()
-------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
||||
|
|||||
Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 1 Всего: 71 |
тоже предпочитаю foreach, в примере for использовал для другой цели от которой потом отказался, а функция осталась...
![]() Решил тесты провести... foreach оказался примерно в 17 раз быстрее for если массив схожей структуры взять -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
capitan |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 602 Регистрация: 27.2.2005 Где: Москва Репутация: 1 Всего: 13 |
А ты сам попробуй ![]() Этот код парсит страницу, к примеру: http://m.kinopoisk.ru/cast/394375 |
||||
|
|||||
Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 1 Всего: 71 |
попробовал
![]()
и ты знаешь, а мой мгновенно всё перегнал ![]() -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 2 Всего: 137 |
||||
|
||||
capitan |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 602 Регистрация: 27.2.2005 Где: Москва Репутация: 1 Всего: 13 |
Тоже странно. http://php.spb.ru/php/speed.html тут проводили тесты, for и while оказались быстрее foreach. Причем, еще есть разница в
и
При втором варианте время увеличивается ещё. |
||||||||
|
|||||||||
Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 1 Всего: 71 |
Aliance, а как поверишь?
![]() в общем странно, дома у меня другие результаты были.. на работе разница увеличилась вот мой тест
Апач 2.2.23 PHP 5.4.8 capitan, статейка старенькая и думаю результаты уже поменялись с выходом новых версий PHP Добавлено через 7 минут и 53 секунды проверил на нескольких компах на работе.. разница 145-185, 17 даже близко не смог получить ![]() Это сообщение отредактировал(а) Gold Dragon - 28.2.2013, 13:36 -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
Aliance |
|
||||||||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 2 Всего: 137 |
вот это
можно заменить на это:
и вот это
на это
Ну и если верить тестам по ссылке выше, нужно все же не просто прогонять цикл, а что-то делать с данными. Например вызывать sprintf. Ну и в целом-то никак не в 17 раз ![]() Это сообщение отредактировал(а) Aliance - 28.2.2013, 13:43 |
||||||||
|
|||||||||
Gold Dragon |
|
||||||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 1 Всего: 71 |
Aliance, ты прав, упустил такой момент как count. Заменил на твоё и разница сократилась до 2,5
![]() Добавлено через 4 минуты и 47 секунд
добавил
заменил на
-------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
||||||
|
|||||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Тексты | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |