2013-10-16 41 views
1

我有一個字符串Picture > 1000 words,它存儲了HTML轉義的Picture > 1000 words。我需要URL編碼原始字符串得到Picture%20%3E%201000%20words如何對Twig中的HTML轉義文本進行URL編碼?

我試過不同的過濾器序列,但沒有一個產生所需的結果。

{# 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

';'是必需的html_entity的末尾,所以它應該是'>' – baldrs

+0

@Baldrs tx。拼寫錯誤。 – Websirnik

回答

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) }} 

你的問題是不正確的字符串實體

+0

謝謝你!您的自定義過濾器建議爲我工作。將嘗試更新Twig以查看'raw'是否也可以工作。 – Websirnik

相關問題