Надежные регулярные выражения для HTML сложны .Вот как это сделать с DOM :
$dom = new DOMDocument;
$dom->loadHTML($html);
foreach ($dom->getElementsByTagName('a') as $node) {
echo $dom->saveHtml($node), PHP_EOL;
}
Выше было бы найти и вывести "outerHTML" всех A
элементов в $html
строка
Чтобы получить все текстовые значения узла, вы должны
echo $node->nodeValue;
К проверить , если атрибут href
существует, вы можетесделать
echo $node->hasAttribute( 'href' );
до получить атрибут href
, который вы сделаете
echo $node->getAttribute( 'href' );
до изменить атрибут href
, который вы'do
$node->setAttribute('href', 'something else');
To удалить атрибут href
, который вы сделаете
$node->removeAttribute('href');
Вы также можете запросить атрибут href
напрямую с помощью XPath
$dom = new DOMDocument;
$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$nodes = $xpath->query('//a/@href');
foreach($nodes as $href) {
echo $href->nodeValue; // echo current attribute value
$href->nodeValue = 'new value'; // set new attribute value
$href->parentNode->removeAttribute('href'); // remove attribute
}
См. Также:
О sidenote: Я уверен, что это дубликат, и вы можете найти ответ где-то здесь