Las expresiones regulares confiables para HTML son difíciles . A continuación se explica cómo hacerlo con DOM :
$dom = new DOMDocument;
$dom->loadHTML($html);
foreach ($dom->getElementsByTagName('a') as $node) {
echo $dom->saveHtml($node), PHP_EOL;
}
Lo anterior buscaría y generaría el "HTML externo" de todos los A
elementos de la $html
cadena.
Para obtener todos los valores de texto del nodo, haz
echo $node->nodeValue;
Para comprobar si el href
atributo existe, puede hacer
echo $node->hasAttribute( 'href' );
Para obtener el href
atributo que harías
echo $node->getAttribute( 'href' );
Para cambiar el href
atributo que harías
$node->setAttribute('href', 'something else');
Para eliminar el href
atributo que harías
$node->removeAttribute('href');
También puede consultar el href
atributo directamente con 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
}
Ver también:
En una nota al margen: estoy seguro de que esto es un duplicado y puede encontrar la respuesta en algún lugar aquí