Надежное регулярное выражение для HTML сложно . Вот как это сделать с помощью DOM :
$dom = new DOMDocument;
$dom->loadHTML($html);
foreach ($dom->getElementsByTagName('a') as $node) {
echo $dom->saveHtml($node), PHP_EOL;
}
Вышеупомянутое найдет и выведет "externalHTML" всех A
элементов в $html
строке.
Чтобы получить все текстовые значения узла, выполните
echo $node->nodeValue;
Чтобы проверить, существует ли href
атрибут, вы можете сделать
echo $node->hasAttribute( 'href' );
Для того, чтобы получить на href
атрибут , который бы сделать
echo $node->getAttribute( 'href' );
Для того, чтобы изменить на href
атрибут , который нужно сделать
$node->setAttribute('href', 'something else');
Для того, чтобы удалить с 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
}
Также см:
На полях: я уверен, что это дубликат, и вы можете найти ответ где-то здесь