|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
01.09.2018, 12:41 | #1 |
Новичок
Джуниор
Регистрация: 01.09.2018
Сообщений: 2
|
Не работает регулярное выражение, если параметры поиска выводить в переменных (с переходом строки \n\r)
Уже третий день не могу решить один момент с парсером.
1) Раньше для парсинга я просто вставлял куски кода в файлике, ну например: $page=file_get_contents($link); preg_match_all('# href="(.+?)">#su', $page, $pagin);//Выкачивание анкора ссылки Затем решил эти значения ("href=") и (">) загнать в переменные для удобства, ну к примеру чтобы их хранить в таблице sql. 2) $page=file_get_contents($link); $param_1=' href="'; $param_2='">'; preg_match_all('#'.$param_1.'(.+?)' .$param_2.'#su', $page, $pagin);//Название товара Второй вариант работает, но только не в случае, если какая-нибудь из переменных имеет переход строки, типо такого: $param_1=' <span> <a href="'; Помогите плиз... |
01.09.2018, 12:47 | #2 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Используйте HTML парсер для парсинга HTML, а не регекспы.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
01.09.2018, 12:50 | #3 |
Новичок
Джуниор
Регистрация: 01.09.2018
Сообщений: 2
|
|
01.09.2018, 13:25 | #4 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
регексп это regular expression.
Как правило их дико неудобно и ненадежно использовать для парсинга HTML. Лучше взять библиотеку для парсинга HTML (там обычно CSS селекторы или XPath). https://www.google.com/search?q=php+html+parser —> https://stackoverflow.com/questions/...tml-xml-in-php
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
01.09.2018, 13:32 | #5 |
Форумчанин
Регистрация: 05.09.2017
Сообщений: 157
|
Kulikden1985, похоже ваша регулярка (.+?) не ловит переносы строк \r\n, даже не смотря на ключ /s. Попробуйте указать их явно как [\r\n]* там где они могут встретиться:
Код:
Код:
PS: Строки с \r\n при инициации должны быть в двойных кавычках ", ибо в одинарных ' PHP не заменяет \r\n их на коды символов.
Безопасность с Content Security Policy
Последний раз редактировалось Ottava; 01.09.2018 в 13:42. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Preg_match Проверка группы переменных на регулярное выражение | Женя32 | PHP | 3 | 28.01.2017 08:58 |
Не совсем корректно работает регулярное выражение | artur4ek94 | PHP | 3 | 30.10.2016 14:27 |
Регулярное выражение. Элементы строки в массив. | Stilet | JavaScript, Ajax | 7 | 04.11.2015 09:47 |
XE2. Не работает регулярное выражение из коробки | Человек_Борща | Общие вопросы Delphi | 0 | 09.02.2014 14:38 |
Регулярное выражение | kpachbiu | PHP | 2 | 08.02.2011 21:36 |