php - 如何在 PHP 中使用 DOMDocument 节点的特殊字符设置属性?

标签 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 编码。有办法做到这一点吗?

最佳答案

我不知道有什么方法可以避免这种百分比编码。

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

$pageHtml = $dom->saveHTML();
$pageHtml = preg_replace('|="%7B%7B%20(.*?)%20%7D%7D"|', '="{{ $1 }}"', $pageHtml);

关于php - 如何在 PHP 中使用 DOMDocument 节点的特殊字符设置属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40516387/

相关文章:

javascript - 无法使用php在linux中下载文件

php - MySQL根据结果数进行连接

javascript - 使用 Mithril 在运行时创建新元素

javascript - 为什么 document.all 是假的?

php - 使用div重定向到php脚本

javascript - 可展开横幅的标准 z 索引。

java - 如何使用 org.w3c.dom.Document 将数据发布到 javascript

php - 在 PHP 中使用 DOM 操作将特定的 <font> 标记替换为 <span>

PHP DOMDocument 错误实体 'nbsp' 未定义

php - PHP MySQL SELECT 中的嵌套 if 语句