Проблема имен тегов при парсинге атрибутов через регулярки в 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">