Fiable Regex HTML sont difficiles. Voici comment le faire avec DOM:
$dom = new DOMDocument;
$dom->loadHTML($html);
foreach ($dom->getElementsByTagName('a') as $node) {
echo $dom->saveHtml($node), PHP_EOL;
}
Le ci-dessus serait de trouver et de sortie de la "outerHTML" de à tous A
éléments dans l' $html
chaîne de caractères.
Pour obtenir toutes les valeurs de texte du nœud, vous ne
echo $node->nodeValue;
Pour vérifier si l' href
attribut existe, vous pouvez le faire
echo $node->hasAttribute( 'href' );
Pour obtenir l' href
attribut que vous souhaitez faire
echo $node->getAttribute( 'href' );
Pour changer l' href
attribut que vous souhaitez faire
$node->setAttribute('href', 'something else');
Pour supprimer l' href
attribut que vous souhaitez faire
$node->removeAttribute('href');
Vous pouvez également interroger pour l' href
attribut directement avec XPath
$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
}
Voir aussi:
Sur une note: je suis sûr que c'est un doublon et vous pouvez trouver la réponse quelque part ici