Maison >développement back-end >tutoriel php >Analyse Regex ou DOM : quel est le meilleur moyen d'extraire les attributs « href » du HTML ?

Analyse Regex ou DOM : quel est le meilleur moyen d'extraire les attributs « href » du HTML ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-22 18:39:10365parcourir

Regex vs. DOM Parsing: Which is Best for Extracting `href` Attributes from HTML?

Récupérer l'attribut href d'un élément A : analyse Regex vs DOM

Essayer d'extraire les informations de lien d'une page HTML nécessite une manipulation minutieuse de l'attribut href. Bien que les expressions régulières offrent une approche basique, elles peuvent rencontrer des difficultés lorsque l'attribut href n'est pas placé en premier dans la balise a.

Une alternative fiable consiste à utiliser l'analyse du modèle objet de document (DOM). Voici comment récupérer efficacement les informations d'attribut href à l'aide de DOM :

$dom = new DOMDocument;
$dom->loadHTML($html);
foreach ($dom->getElementsByTagName('a') as $node) {
    echo $dom->saveHtml($node), PHP_EOL;
}

Ce code recherche et affiche le "outerHTML" de tous les éléments A dans la chaîne $html.

De plus, DOM fournit le capacités suivantes :

  • Obtention de la valeur du texte : $node->nodeValue
  • Vérification de l'existence de l'attribut href : $node->hasAttribute( 'href' )
  • Obtention de l'attribut href : $node->getAttribute( 'href' )
  • Modification de l'attribut href : $node->setAttribute('href', 'something else')
  • Suppression de l'attribut href : $node->removeAttribute('href')
  • Requête de l'attribut href directement avec XPath :
$nodes = $xpath->query('//a/@href');
foreach ($nodes as $href) {
    echo $href->nodeValue; // echo current attribute value
}

DOM fournit une solution complète pour analyser le HTML et extraire efficacement les informations sur les attributs href. Considérez cette approche pour des résultats robustes et fiables. Reportez-vous également aux ressources fournies pour une exploration plus approfondie.

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:
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