Покинул форум
Сообщений всего: 12
Дата рег-ции: Окт. 2018
Помог: 0 раз(а)
Здравствуйте!
Задача следующая:
При помощи регулярного выражения необходимо найти и получить всю информацию (текст и ссылки - соответственно латинские и русские символы), которые находятся между двумя тегами </script> и <br>. Данная информация не находится ни в <div> ни в таблице, она просто выводится скриптом. На странице много тегов </script> и <br>, но всего лишь одна комбинация когда после </script> идут текст и ссылка, а после них тег <br>. Получить результат пытаюсь при помощи следующего кода, но получаю bool(false).
P.S. в переменной $url хранится адрес страницы, с которой пытаюсь спарсить инфо
<a href="http://site.ru/monitor/?menu=products&edit=1108&88066504932163">Зарядные устройства, аккумуляторы</a> » <a href="http://site.ru/monitor/?menu=products&edit=1747&6067337044425">внешние аккумуляторы</a> » <br><a href="http://site.ru/monitor/?menu=products&edit=1&4572837043506&highlight=6061#6061"><b><< вернуться в каталог</b></a>
Строитель
Отправлено: 28 Октября, 2018 - 17:24:51
Участник
Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014 Откуда: Украина
Помог: 73 раз(а)
mikka, это вы привели строку, которую надо получить. А ещё нужна строка, ИЗ которой надо получить. Или я не так понял?
mikka
Отправлено: 28 Октября, 2018 - 17:33:18
Новичок
Покинул форум
Сообщений всего: 12
Дата рег-ции: Окт. 2018
Помог: 0 раз(а)
строка которую необходимо спарсить представляет собой страницу сайта, она очень большая, а вот этот кусочек кода имеется в ней, для большего понимания публикую немного большую часть
Покинул форум
Сообщений всего: 12
Дата рег-ции: Окт. 2018
Помог: 0 раз(а)
теперь получаю ошибку
Warning: preg_match_all() [function.preg-match-all]: Compilation failed: lookbehind assertion is not fixed length at offset 18
Строитель
Отправлено: 28 Октября, 2018 - 18:14:38
Участник
Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014 Откуда: Украина
Помог: 73 раз(а)
mikka пишет:
теперь получаю ошибку
Значит вы допустили ошибку при копировании или редактировании моего кода -- я на локальном сервере проверял этот код перед публикацией. (Добавление) mikka, покажите, как вы его используете.
mikka
Отправлено: 28 Октября, 2018 - 18:48:25
Новичок
Покинул форум
Сообщений всего: 12
Дата рег-ции: Окт. 2018
Помог: 0 раз(а)
после удаления в начале регулярного выражения ?<= ошибка ушла и получил практически нужный результат.
использую вот так вот
Искомая подстрока будет соответствовать шаблону, если:
1. Начинается с тега </script> после которого обязательно следуют символы перевода каретки и новой строки \r\n, или | символ горизонтального отступа (пробел) \h.
Описанную выше последовательность символов необходимо сгруппировать с помощью конструкции не сохраняющих скобок: (?: </script> \r\n | \h )
2. Далее ожидается html-тег <a, за которым может следовать любая последовательность символов, кроме символа >, и эта последовательность символов должна заканчиваться символом >: <a[^>]*>
3. Далее следует любая группа символов .+?, за которой обязательно должен следовать закрывающий html-тег </a>. Обратите внимание, что для "захвата" группы символов между html-тегами <a[^>]*> и </a> в отдельный элемент массива, используется захватывающая группировка ( .+? ): <a[^>]*>(.+?)</a>
4. Символы ~ - это ограничители шаблона.
5. Модификатор s - задаёт режим соответствия для символьного класса "." (точка - это символьный класс в регулярных выражениях).
По умолчанию символ "." соответствует почти любому символу, кроме символа перевода на новую строку (и ещё каких-то непечатаемых символов, точно не помню). Для включения режима полного соответствия любому символу, в конец шаблона добавляется модификатор s.
mikka
Отправлено: 29 Октября, 2018 - 08:23:24
Новичок
Покинул форум
Сообщений всего: 12
Дата рег-ции: Окт. 2018
Помог: 0 раз(а)
версия PHP 5.3.13
Спасибо огромное за помощь и за разъяснения!
Строитель
Отправлено: 29 Октября, 2018 - 08:39:39
Участник
Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014 Откуда: Украина
Помог: 73 раз(а)
mikka пишет:
версия PHP 5.3.13
Обновляйтесь до 7-ки
mikka
Отправлено: 29 Октября, 2018 - 10:11:51
Новичок
Покинул форум
Сообщений всего: 12
Дата рег-ции: Окт. 2018
Помог: 0 раз(а)
Уже в процессе обновления. =)
А данную задачу как-то при помощи phpQuery реализовать возможно?
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.