Beim Versuch, Links auf einer Seite zu finden, besteht ein gängiger Ansatz darin, reguläre Ausdrücke zu verwenden. In Fällen wie diesem jedoch:
<a title="this" href="that">what?</a>
wo das href-Attribut nicht an erster Stelle im a-Tag steht, kann der folgende reguläre Ausdruck fehlschlagen:
/<a\s[^>]*href=(\"\'??)([^\"\' >]*?)[^>]*>(.*)<\/a>/
Einen zuverlässigen regulären Ausdruck für finden Der Umgang mit HTML kann eine Herausforderung sein. Erwägen Sie als Alternative die Verwendung des DOM (Document Object Model) für diesen Zweck.
So können Sie DOM verwenden, um das href-Attribut und andere Informationen von A abzurufen Elemente:
$dom = new DOMDocument; $dom->loadHTML($html); // Loop through all 'a' elements foreach ($dom->getElementsByTagName('a') as $node) { // Output the entire 'a' element's outer HTML echo $dom->saveHtml($node), PHP_EOL; // Get the node's text value echo $node->nodeValue; // Check if the node has a 'href' attribute echo $node->hasAttribute( 'href' ); // Get the 'href' attribute's value echo $node->getAttribute( 'href' ); // Change the 'href' attribute's value $node->setAttribute('href', 'something else'); // Remove the 'href' attribute $node->removeAttribute('href'); }
XPath kann auch kann verwendet werden, um nach bestimmten Attributen wie dem href-Attribut abzufragen:
$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 }
Mit dem DOM können Sie Attribute wie href einfach aus A-Elementen abrufen und bearbeiten. Dieser Ansatz bietet eine zuverlässigere und flexiblere Möglichkeit, mit HTML umzugehen als reguläre Ausdrücke.
Das obige ist der detaillierte Inhalt vonWie kann ich das ``href`-Attribut zuverlässig von einem ``-Element in HTML abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!