1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| libxml_use_internal_errors(true);
$dom = new DOMDocument;
$dom->loadHTMLFile('fichier.html', LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
$xp = new DOMXPath($dom); // instance de DOMXPath liée à l'instance de DOMDocument: $dom
$query = '//@href|//@src'; // tout attribut (@ désigne un attribut) href ou (|) src n'importe où (//) dans l'arborescence
$attrNodeList = $xp->query($query); // renvoie une instance de DOMNodeList
foreach($attrNodeList as $attrNode) {
// $attrNode est une instance de DOMNode
// on remplace / par ./ si l'attribut commence (^ est l'ancre de début de chaîne) par /
$newAttrValue = preg_replace('~^/~', './', $attrNode->nodeValue);
// on fait la substitution: $attrNode->parentNode désigne le tag dans lequel se trouve l'attribut (c'est son parent dans l'arbre)
$attrNode->parentNode->setAttribute($attrNode->name, $newAttrValue);
}
// on enregistre le résultat dans une variable (il est aussi possible de l'enregistrer directement dans un fichier)
$result = $dom->saveHTML(); |
Partager