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 ?

Comment puis-je récupérer de manière fiable l'attribut `href` d'un élément `` en HTML ?

Mary-Kate Olsen
Libérer: 2024-12-28 05:41:13
original
853 Les gens l'ont consulté

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

Récupérer l'attribut href d'un élément A

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>
Copier après la connexion

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>/
Copier après la connexion

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.

Utiliser le DOM pour gérer le HTML

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');
}
Copier après la connexion

Utilisation de XPath pour interroger href Attribut

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
}
Copier après la connexion

Conclusion

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal