我有一个字符串Picture > 1000 words
,它存储了HTML转义Picture > 1000 words
。我需要对原始字符串进行URL编码以获得Picture%20%3E%201000%20words
我尝试了不同的过滤器序列,但没有一个产生所需的结果。
{# title = "Picture > 1000 words" #}
{{ title | url_encode(true) }}
{{ title | raw | url_encode(true) }}
{{ title | url_encode(true) | raw }}
在所有3个案例中结果相同:Picture%20%26gt%3B%201000%20words
。如何避免Twig编码已转义的文本并获得所需的结果?
答案 0 :(得分:2)
要获得此Picture%20%3E%201000%20words
,您应该拥有没有html实体的原始字符串
所以这应该有效:
{% set title = "Picture > 1000 words" %}
{{ title | url_encode(true) }}
如果您确实需要解码模板中的实体,可以为此目的注册自定义过滤器:
$filter = new Twig_SimpleFilter('decode_entities', function ($string) {
return html_entity_decode($string);
});
// then connect it with environment
$twig = new Twig_Environment($loader);
$twig->addFilter($filter);
然后像这样使用它:
{{ title | decode_entities | url_encode(true) }}
修改强>
刚刚尝试了最新上游树枝的示例,这可以按预期工作:
{{ title | raw | url_encode(true) }}
您的问题是字符串实体不正确