Heim > Backend-Entwicklung > PHP-Tutorial > Wie kann ich das ``href`-Attribut zuverlässig von einem ``-Element in HTML abrufen?

Wie kann ich das ``href`-Attribut zuverlässig von einem ``-Element in HTML abrufen?

Mary-Kate Olsen
Freigeben: 2024-12-28 05:41:13
Original
800 Leute haben es durchsucht

How Can I Reliably Retrieve the `href` Attribute from an `` Element in HTML?

Erfassen des href-Attributs eines A-Elements

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>
Nach dem Login kopieren

wo das href-Attribut nicht an erster Stelle im a-Tag steht, kann der folgende reguläre Ausdruck fehlschlagen:

/<a\s[^>]*href=(\"\'??)([^\"\' >]*?)[^>]*>(.*)<\/a>/
Nach dem Login kopieren

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.

DOM zur Verarbeitung von HTML verwenden

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');
}
Nach dem Login kopieren

Verwenden von XPath zur Abfrage des href-Attributs

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
}
Nach dem Login kopieren

Fazit

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage