Bonjour,

j'écris un script qui doit modifier des fichiers de templates Twig à la volée pour mettre à jour une donnée un peu partout.

Mon script s'exécute correctement, le hic c'est qu'au moment de l'appel de saveHTMLFile(), mon fichier de destination a non seulement des balises HTML/body en plus mais toutes les URL dans les attributs src par ex sont désormais encodés, tout comme certains opérateurs == de twig qui deviennent &gt.


En fait, j'aimerais faire du setAttribute() tel que je fais actuellement, mais sans qu'aune autre chose ne soit altérée dans le document.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
<?php
$document = new DOMDocument();
            $document->loadHTMLFile
            (
                $twigFile, LIBXML_HTML_NODEFDTD /* pas d'ajout de DTD dans le doc a la sauvegarde */
            );
 
            $scriptTagsElements = $document->getElementsByTagName("script" );
 
            /** @var DOMElement $scriptTagElement */
            foreach ( $scriptTagsElements as $scriptTagElement )
            {
                $regex = "/\-\d+?\.\d+\.js$/";
 
                if ( preg_match( $regex , $scriptTagElement->getAttribute("src" ) ) )
                {
                    $newVersion = self::getVersion();
 
                    $assetsPathNoVersion = preg_split( "/-/", $scriptTagElement->getAttribute( "src" ) )[0];
 
                    $scriptTagElement->setAttribute( "src", $assetsPathNoVersion . "-" . $newVersion . ".js" );
                }
            }
 
            $document->saveHTMLFile( $twigFile );
Des idées pour contourner le problème ?