Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: preg_match_all пропускает второе вхождение
Само выражение для парсинга <div class="feed-i">(.*)<div class="feed-i"> менять НЕЛЬЗЯ.
(В примере я упрощенно написал, но в реальном случае никак иначе спарсить кроме как я указал невозможно, то есть парсить по <div class="feed-i">(.*)<\/div> не вариант)
Как сделать что бы выводилось так?:
Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010 Откуда: Чернигов
Помог: 299 раз(а)
мне кажется проблема в том что вы выводите $matches после цикла и туда попадают только последние значения
----- Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
Koqw
Отправлено: 24 Августа, 2014 - 19:41:24
Новичок
Покинул форум
Сообщений всего: 8
Дата рег-ции: Авг. 2014
Помог: 0 раз(а)
OrmaJever пишет:
мне кажется проблема в том что вы выводите $matches после цикла и туда попадают только последние значения
В самом цикле ставил, все равно не то.
Функция работает так как и должна работать, второй блок <div class="feed-i">222</div> в нее не попадает, потому что часть его уже попала в первое вхождение - так вроде если правильно выразился.
Но может как то можно через дополнительные параметры вывести <div class="feed-i">222</div> ?
OrmaJever
Отправлено: 24 Августа, 2014 - 19:44:42
Активный участник
Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010 Откуда: Чернигов
Помог: 299 раз(а)
а теперь вижу, я сразу не глянул хорошо на регулярку и думал у вас
а зачем вам такая регулярка? Вам что нужно, выводить через один див, но при этом получать и остальные значения?
----- Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
Koqw
Отправлено: 24 Августа, 2014 - 20:00:24
Новичок
Покинул форум
Сообщений всего: 8
Дата рег-ции: Авг. 2014
Помог: 0 раз(а)
Нет, не нужно через один.
Нужно только первое и второе вхождение.
А берется первое и третье.
Беру по такой регулярке <div class="feed-i">(.*)<div class="feed-i">, потому что иначе никак, поскольку в реальном примере перед повторяющимися блоками <div class="feed-i">
могут быть сколько угодно </div> и другие теги.
Нет, вы не так поняли, мне нужно все содержимое <div class="feed-i">...</div> включая вложенные в него div
Перед вновь повторяющимися <div class="feed-i"> может быть огромое и рандмное количество заканчивающихся тегов </div>, а так же других тегов, и между ними не всегда цифры.
Так как вы написали он будет искать самый первый встречающийся </div> и возьмет все что до него.
если у меня строка наример <div class="feed-i"><div><div>111</div></div></div>
то он возьмет <div class="feed-i"><div><div>111</div>
А это не то.
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Koqw пишет:
в гугле ничего не нашел
"php html parser"?
Серьёзно? Ничего?
DomDocument, Simple HTML DOM, htmlSQL, phpQuery, Zend_Dom_Query
В моей выдаче третей же строкой список разных парсеров на хабре: http://habrahabr[dot]ru/post/176635/
----- PostgreSQL DBA
Koqw
Отправлено: 24 Августа, 2014 - 21:58:29
Новичок
Покинул форум
Сообщений всего: 8
Дата рег-ции: Авг. 2014
Помог: 0 раз(а)
Мелкий пишет:
Koqw пишет:
в гугле ничего не нашел
"php html parser"?
Серьёзно? Ничего?
DomDocument, Simple HTML DOM, htmlSQL, phpQuery, Zend_Dom_Query
В моей выдаче третей же строкой список разных парсеров на хабре: http://habrahabr.ru/post/176635/
Искал изначально по "полновесный парсер html" как вы и написали вначале.
Спс всем за помощь.
Bartolomey
Отправлено: 09 Января, 2015 - 16:25:40
Новичок
Покинул форум
Сообщений всего: 1
Дата рег-ции: Янв. 2015
Парсит файл со статьями. Помещает их в отдельные файлы, с номером по порядку.
Проблема: По факту из порядка выпадают некоторые файлы, не создаются. То есть вместо 776 файлов, получается 424 файла.
Перепробовал всяческие вариации регулярных выражений, Такие и им подобные
Результат один. Уже убил сутки на эксперименты с регулярными выражениями. Пытался найти что не будь по preg_match_all, может у кого были подобные проблемы, ничего найти не смог, наверное плохо искал или не там искал или не то искал.
Люди добрые помогите, направьте на путь истинный. Что я упускаю?
При желании можете провести следственный эксперимент. По указанному в парсере адресу, лежит файле в котором 2-ве статьи, парсер почему то создаёт только один файл.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.