@Ic2d
Самоучка:)

Почему preg_match_all не срабатывает?

Пытаюсь парсить страницу, и перенести данные в переменную $result все содержимое между
<h2>Объявления в разделе Ноутбуки, нетбуки</h2>
                            <div class="classifieds">
                                <ul>

и
</ul>
                            </div>


Но почему-то не срабатывает preg_match_all , возвращает пустую строку. :(

Вот моя строка:
preg_match_all('|<h2>Объявления в разделе Ноутбуки, нетбуки</h2><div class="classifieds"><ul>(.*)</ul></div>|im', $html[0], $result, PREG_SET_ORDER, 0);
print_r ($result)
  • Вопрос задан
  • 173 просмотра
Решения вопроса 1
@Vmexanik
Web developer
потому что неправильно создана регулярка. Лучше всего их проверять тут https://regex101.com/
Для твоего случая она будет такой:
$re = '/<h2>Объявления\sв\sразделе\sНоутбуки\,\sнетбуки<\/h2><div\sclass\=\"classifieds\"><ul>(.+)<\/ul><\/div>/i'; То, что ты ищешь будет в первой группе
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@choupa
Архитектор (обычный, который строит)
1. Добавьте \s* где только может быть или пробел, или перевод строки.

2. Вообще лучше использовать для ограничения регулярного выражения слэши /, это более распространённый синтаксис. Однако при этом не забывайте экранировать слэши в самом выражении: \/

/<h2>Объявления в разделе Ноутбуки, нетбуки<\/h2>\s*<div class="classifieds">\s*<ul>\s*(.*)\s*<\/ul>\s*<\/div>/im
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы