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