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

Почему preg_match неправильно срабатывает?

Пытаюсь создать массив данных со всеми найденными совпадениями, но что-то бред какой-то выходит:(
Условие такое, что сохранять в массив данные между
<li class="classified">
и
</li>

https://regex101.com/r/zJZ8Ze/4/

:(
  • Вопрос задан
  • 75 просмотров
Решения вопроса 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Во первых надо задать ангриди флаг, во вторых если нужно все - используйте preg_match_all
https://regex101.com/r/XSYjmy/2
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Fernus
@Fernus
Техник - Механик :)
Такое надо может?
$str = 'вся там эта требуха...';

preg_match_all('#<li class="classified">(.*)</li>#isU', $str, $results);

print_r($results);
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Всё работает именно так, как написано в вашем регулярном выражении. От первого встреченного <li class="classified"> до последнего </li>.
Если хотите выбрать по отдельности каждый элемент, то надо использовать квантификатор нежадности.
preg_match_all('/<li class="classified">(.*?)<\/li>/msi', $str, $matches);
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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