Поиск тегов в регулярном выражении

Voronov9988

Новичок
Подскажите в чем может быть ошибка в регулярном выражении

preg_match_all('|\[img[^>]*?\]|sei', $str, $arr);

Необходимо найти в тексте все теги img, пример:


но если внутри тега вложены другие теги, как в примере alt="[auto_model] [auto_model] - название услуги"

то тег обрезается до
Array(
[0] => [img id="auto_model" align="right" alt="[auto_model]
)
 

fixxxer

К.О.
Партнер клуба
Ошибки нет, все работает правильно - от [ до следующего ].

Ты хочешь учесть вложенные теги. Вообще это не самая лучшая задача для регулярных выражений, проще переписать парсер на конечный автомат со стеком. Но если очень хочется и готов вывихнуть себе мозг, это в принципе можно сделать через PCRE-рекурсию, разбирайся:

http://php.net/manual/en/regexp.reference.recursive.php
https://www.regular-expressions.info/recurse.html
http://www.rexegg.com/regex-recursion.html

и так далее.
 
Сверху