Maison >développement back-end >tutoriel php >Comment puis-je récupérer de manière fiable l'attribut `href` d'un élément `` en HTML ?
Pour tenter de trouver des liens sur une page, une approche courante consiste à utiliser des expressions régulières. Cependant, dans des cas comme celui-ci :
<a title="this" href="that">what?</a>
où l'attribut href n'est pas placé en premier dans la balise a, l'expression régulière suivante peut échouer :
/<a\s[^>]*href=(\"\'??)([^\"\' >]*?)[^>]*>(.*)<\/a>/
Trouver une expression régulière fiable pour la gestion du HTML peut être difficile. Comme alternative, envisagez d'utiliser le DOM (Document Object Model) à cette fin.
Voici comment utiliser le DOM pour récupérer l'attribut href et d'autres informations de A elements :
$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 peut également être utilisé pour interroger des attributs spécifiques, tels que l'attribut href :
$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 }
En utilisant le DOM, vous pouvez facilement récupérer et manipuler des attributs comme href des éléments A. Cette approche offre un moyen plus fiable et plus flexible de gérer le HTML que les expressions régulières.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!