Проблема имен тегов при парсинге атрибутов через регулярки в PHP

Атрибут src может быть не только у картинок, но и у других тегов:

<img src="1.png"> <script src="file.js"></script>

Также в теге могут быть и другие атрибуты:

<img src="1.png"> <img class="image" src="1.png"> <script src="file.js"></script>

Чтобы не цеплять лишние теги, мы должны указать в регулярке имя тега. При этом также придется учесть наличие других атрибутов. Сделаем это:

<?php preg_match_all('#<img[^>]+src\s*=\s*(["\'])(.+?)\1#su', $str, $matches, PREG_PATTERN_ORDER); ?>

Проверим, что все работает:

<?php var_dump($matches[2]); ?>

Найдите содержимое атрибутов href всех ссылок:

<a href="page1.html">link1</a> <a href='page2.html'>link2</a> <a class="link" href = "page3.html">link3</a> <link rel="stylesheet" href="styles.css">