使用PHP的DOMDocument时,避免使用百分比编码href属性

ano*_*ard 8 html php xslt domdocument percent-encoding

我能找到的最好的答案是使用XSLT,但我不知道如何将这些答案应用于我的问题.

基本上,DOMDocument在href传递传入的URL(在属性中)方面做得很好,但我实际上是用它来构建一个Twig/Django样式模板,而我宁愿让它们独自存在.这是一个具体的例子,说明了"问题":

<?php
$doc = new DOMDocument();
$doc->loadHTML('<html><body>Test<br><a href="{{variable}}"></a></body></html>');
echo $doc->saveHTML();
Run Code Online (Sandbox Code Playgroud)

其中输出如下:

<html><body>Test<br><a href="%7B%7Bvariable%7D%7D"></a></body></html>
Run Code Online (Sandbox Code Playgroud)

是否有可能href不对属性进行百分比编码?

如果不能直接进行,您能否建议简洁可靠的解决方法?我正在进行其他处理,并且DOMDocument的使用必须保留.那么也许是一个前/后处理技巧?

ano*_*ard 5

我对“hack”/管道胶带解决方案不满意,但这就是我目前解决问题的方式:

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);
Run Code Online (Sandbox Code Playgroud)