Регулярные выражения для парсинга HTML — не очень удобная штука. Лучше воспользоваться встроенным в PHP объектом DOM, он сделает Ваш код более простым, быстрым и надёжным:
Код:
$dom = new DOMDocument;
$dom->loadHTML($html);
foreach ($dom->getElementsByTagName(‘a’) as $node) {
echo $dom->saveHtml($node), PHP_EOL;
}
Этот код выведет HTML-код всех ссылок, которые находятся в переменной $html.
Для работы с атрибутами есть следующие функции.
Проверить, существует ли атрибут href у Вашей ссылки:
Код:
if($node->hasAttribute( ‘href’ )) {
// …
}
Вывести значение атрибута href:
Код:
1
echo $node->getAttribute( ‘href’ );
Изменить значение атрибута href:
Код:
$node->setAttribute(‘href’, ‘something else’);
Удалить атрибут href:
Код:
$node->removeAttribute(‘href’);
А ещё можно работать с HTML-атрибутами непосредственно из XPath:
Код:
$dom = new DOMDocument;
$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$nodes = $xpath->query(‘//a/@href’);
foreach($nodes as $href) {
echo $href->nodeValue; // выводим значение атрибута
$href->nodeValue = ‘new value’; // задаём новое значение атрибута
$href->parentNode->removeAttribute(‘href’); // удаляем атрибут
}
Источник: Получить атрибут href ссылки на PHP | Web-Answers.Ru.