Zuverlässiger Regex für HTML ist schwierig . So geht's mit DOM :
$dom = new DOMDocument;
$dom->loadHTML($html);
foreach ($dom->getElementsByTagName('a') as $node) {
echo $dom->saveHtml($node), PHP_EOL;
}
Das Obige würde das "OuterHTML" aller A
Elemente in der $html
Zeichenfolge finden und ausgeben .
Um zu erhalten alle Textwerte des Knotens, was Sie tun
echo $node->nodeValue;
Um zu überprüfen, ob das href
Attribut vorhanden ist, können Sie dies tun
echo $node->hasAttribute( 'href' );
Um zu erhalten das href
Attribut , das Sie tun würde
echo $node->getAttribute( 'href' );
Um das Attribut zu ändernhref
, würden Sie tun
$node->setAttribute('href', 'something else');
Um das Attribut zu entfernenhref
, würden Sie tun
$node->removeAttribute('href');
Sie können das href
Attribut auch direkt mit XPath abfragen
$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
}
Siehe auch:
Nebenbei: Ich bin sicher, dass dies ein Duplikat ist und Sie können die Antwort irgendwo hier finden