如何在PHP中使用DOMDocument节点的特殊字符setAttribute?

时间:2016-11-09 21:33:41

标签: php dom domdocument

我正在尝试使用PHP中的DOM设置一个TWIG文件。所以我设置了DOM并抓取了我从中获取模板的网站:

$dom = new DOMDocument('1.0');
$dom->loadHTMLFile('http://theurl.com');

然后我修改脚本的src并保存模板:

foreach ($domNode->childNodes as $node) {
  $node->setAttribute('src', "{{ asset('path/to/asset.js') }}");
}
$pageHtml = $dom->saveHTML();
然后将 $ pageHtml保存为TWIG文件:

file_put_contents('path/to/file.twig', $pageHtml);

当我查看此文件时,我现在拥有脚本标记:

<script src="%7B%7B%20asset('path/to/asset.js')%20%7D%7D"></script>

我需要的是:

<script src="{{ asset('path/to/asset.js') }}"></script>

所以我不知何故需要阻止它进行url编码。有什么办法吗?

2 个答案:

答案 0 :(得分:3)

我不知道如何避免这种百分比编码。

解决此问题的一种方法是在保存之前替换编码字符,例如

compile 'com.google.firebase:firebase-database:9.8.0'

答案 1 :(得分:0)

所以我目前唯一的答案就是在使用preg_replace将其发送到TWIG文件之前修改$ pageHtml:

insert

第一行将替换起始资产标记,第二行将替换最终资产,并将执行css,javascript以及可能使用资产标记的任何其他区域。

我觉得这不是最干净的选择,但目前它是我能找到的最干净的选择。如果有人能提出更好的选择,我会将其作为答案。