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 >.
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.
Des idées pour contourner le problème ?
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 );
Partager