Modifier le code html du site en utilisant CURL et DOM
Bonsoir tout le monde.
J’essaye de développer un composant pour l’optimisation des sites web et je test cet composant sur joomla .
Donc,ce que j'ai réalisé jusqu'au là est :je récupère le contenu du site avec CURL PHP et je parse le contenu avec DOM pour modifier le code par exemple je modifier les balise <b> par <strong> , la position des scripts javascript …. Ensuite il faut appliquer ses modifications au site (charger ses modifications « le nouveau code html modifié » dans le site) mais j'ai pas trouver une solution pour modifier le site :(
Donc, comment je peux le faire avec CURL ou avec une autre solution si existe ?
vous trouvez un exemple de script que j'ai développé:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| <?php
$URLs = "http://localhost/...";// url of site
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $URLs);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, true);
$source = curl_exec($ch);
libxml_use_internal_errors(true);
$dom = new DOMDocument();
$dom->recover = true;
$dom->substituteEntities = true;
$xhtml = (preg_match('/XHTML/', $source)) ? true : false;
switch ($xhtml) {
case true:
$dom->loadXML($source);
break;
case false:
$dom->loadHTML($source);
break;
}
libxml_use_internal_errors(false);
$body = @$dom->getElementsByTagName('body')->item(0);
foreach (@$dom->getElementsByTagName('head') as $head) {
foreach (@$head->childNodes as $node) {
if ($node instanceof DOMComment) {
if (preg_match('/<script/i', $node->nodeValue)){
$src = $node->nodeValue;
$moveme[] = $node;
unset($src);
}
}
if ($node->nodeName == 'script' && $node->attributes->getNamedItem('type')->nodeValue == 'text/javascript') {
if (@$src = $node->attributes->getNamedItem('src')->nodeValue) {
} else {
$src = $node->nodeValue;
}
$moveme[] = $node;
unset($src);
}
}
}
foreach ($moveme as $moveit) {
$body->appendChild($moveit->cloneNode(true));
$moveit->parentNode->removeChild($moveit);
}
$body = $xhtml ? $dom->saveXML() : $dom->saveHTML();
//ici manque le code pour enregistrer les modifications dans le site |
Et merci d’avance pour votre aide. ;)