Page 1 sur 1

Récupération de toutes les informations à l'intérieur des balises avec DOMNODE

Posté : 03 févr. 2022, 14:30
par Gwentey
Salut tout le monde,

Je suis sur un projet pour l'école et je suis totalement bloqué depuis 2 jours.. j'ai besoin de votre aide #-o

J'ai un script tiers dans lequel je n'ai aucun contrôle sur le HTML et je ne peux modifier que le CSS de base. Je voulais juste savoir s'il est possible de couper toutes les informations de <script> jusqu'à sa fermeture </script> sans faire la distinction entre les éléments à l'intérieur ?

Exemple :

Code : Tout sélectionner

<script src='http://localhost:8888/Sadem/wordpress/wp-content/plugins/elementor/assets/js/frontend.min.js?ver=3.5.3' id='elementor-frontend-js'></script>
Ainsi, par exemple ici, je voudrais récupérer la ligne entière sous forme de chaîne pour la stocker dans un tableau.

Code : Tout sélectionner

$document = new DOMDocument(); libxml_use_internal_errors(true); $document->loadHTML($content); libxml_use_internal_errors(false); // An empty array to store all the 'srcs' $scripts_array = []; // Store every script's source inside the array foreach ($document->getElementsByTagName('script') as $script) { if ($script->hasAttribute('src')) { $scripts_array[] = $script->getAttribute('src'); } }
Voici donc un bout de mon code, pour l'instant j'arrive à récupérer le document chargé, parcourir les scripts mais je ne tire que l'attribut "src" ; mais je veux récupérer tout le contenu sans distinction.

Merci pour vos réponses ! :D

Re: Récupération de toutes les informations à l'intérieur des balises avec DOMNODE

Posté : 03 févr. 2022, 16:43
par ynx
Bonjour,

Tu peux utiliser la fonction saveHTML() de DOMDocument en passant l'élément script en paramètre :
foreach ($document->getElementsByTagName('script') as $script) {
    $scripts_array[] = $script->ownerDocument->saveHTML($script);
}

var_dump($scripts_array);