我能找到的最佳答案是使用XSLT,但我不知道如何将这些答案应用于我的问题。
基本上,DOMDocument正在很好地转义传入的URL(在href
属性中),但我实际上是用它来构建一个Twig / Django样式模板,我宁愿它让他们独自一人。这是一个具体的例子,说明了“问题”:
<?php
$doc = new DOMDocument();
$doc->loadHTML('<html><body>Test<br><a href="{{variable}}"></a></body></html>');
echo $doc->saveHTML();
其中输出以下内容:
<html><body>Test<br><a href="%7B%7Bvariable%7D%7D"></a></body></html>
是否可以对href
属性进行百分比编码?
如果不能直接,您能否建议简洁可靠的解决方法?我正在进行其他处理,并且DOMDocument的使用必须保留。那么也许是一个前/后处理技巧?
答案 0 :(得分:2)
我对'hack'/ duct-tape解决方案不满意,但这就是我目前解决问题的方法:
function fix_template_variable_tokens($template_string)
{
$pattern = "/%7B%7B(\w+)%7D%7D/";
$replacement = '{{$1}}';
return preg_replace($pattern, $replacement, $template_string);
}
$html = $doc->saveHTML();
$html = fix_template_variable_tokens($html);