目前支持的過濾器包括
date format replace number_format url_encode json_encode convert_encoding title capitalize nl2br upper lower striptags join reverse length sort default keys escape raw merge
date過濾器
1.1版本新增時區支持,1.5版本增加了默認的日期格式。
這個過濾器和php的date函數無限類似
{{ post.published_at|date("m/d/Y") }}
{{ "now"|date("m/d/Y") }}
{{ post.published_at|date("m/d/Y") }}
{{ "now"|date("m/d/Y") }}
如果想在格式裡輸出字母,需要在每個字母前輸入\\
{{ post.published_at|date("F jS \\a\\t g:ia") }}
{{ post.published_at|date("F jS \\a\\t g:ia") }}注意:經過我的測試,不能輸入中文字符,這樣寫不行。。 {{ 'now'|date("F jS \\上\\午 g:ia") }}
你可以指定時區
{{ post.published_at|date("m/d/Y", "Europe/Paris") }}
{{ post.published_at|date("m/d/Y", "Europe/Paris") }}
如果你提供的格式化字符串是不支持,會自動使用默認格式 (F j, Y H:i)你可以用代碼修改這個默認格式
$twig = new Twig_Environment($loader);
$twig->getExtension('core')->setDateFormat('d/m/Y', '%d days');
$twig = new Twig_Environment($loader);
$twig->getExtension('core')->setDateFormat('d/m/Y', '%d days');
format過濾器
和php的printf函數一樣,用來替換占位符
{{ "I like %s and %s."|format(foo, "bar") }}
{# returns I like foo and bar
if the foo parameter equals to the foo string. #}
{{ "I like %s and %s."|format(foo, "bar") }}
{# returns I like foo and bar
if the foo parameter equals to the foo string. #}
replace過濾器
這個自己看吧{{ "I like %this% and %that%."|replace({'%this%': foo, '%that%': "bar"}) }}
{# returns I like foo and bar
if the foo parameter equals to the foo string. #}
{{ "I like %this% and %that%."|replace({'%this%': foo, '%that%': "bar"}) }}
{# returns I like foo and bar
if the foo parameter equals to the foo string. #}
number_format過濾器
1.5版本新增過濾器。
他是php函數 number_format的一個包裝 直接見函數參考吧
{{ 200.35|number_format }}
{{ 200.35|number_format }}另外就是可以用php來修改默認的格式
$twig = new Twig_Environment($loader);
$twig->getExtension('core')->setNumberFormat(3, ',', '.');
$twig = new Twig_Environment($loader);
$twig->getExtension('core')->setNumberFormat(3, ',', '.');
url_encode過濾器
這個直接使用 urlencode函數
{{ data|url_encode() }}
{{ data|url_encode() }}
json_encode過濾器
直接使用json_encode函數
{{ data|json_encode() }}
{{ data|json_encode() }}
convert_encoding過濾器
1.4版本新加內容
轉換一個字符串,第一個參數是輸出編碼,第二個參數是輸入編碼
本函數依賴於iconv 或者mbstring 所以至少需要安裝一個
{{ data|convert_encoding('UTF-8', 'iso-2022-jp') }}
{{ data|convert_encoding('UTF-8', 'iso-2022-jp') }}
title過濾器
會讓每個單詞的首字母大寫。
{{ 'my first car'|title }}
{# outputs 'My First Car' #}
{{ 'my first car'|title }}
{# outputs 'My First Car' #}
capitalize過濾器
會把字符串變成 首字母大寫,其余字母小寫的格式
{{ 'my first car'|capitalize }}
{# outputs 'My first car' #}
{{ 'my first car'|capitalize }}
{# outputs 'My first car' #}
nl2br過濾器
會把換行符\n 變成<br />
{{ "I like Twig.\nYou will like it too."|nl2br }}
{# outputs
I like Twig.<br />
You will like it too.
#}
{{ "I like Twig.\nYou will like it too."|nl2br }}
{# outputs
I like Twig.<br />
You will like it too.
#}
upper lower 過濾器
讓字符串變大小寫
striptags過濾器
直接使用的是strip_tags函數
join過濾器
這個我很喜歡,跟python的join一樣,用來將一個數組的內容連接起來,並用指定的字符串分割。
{{ [1, 2, 3]|join }}
{# returns 123 #}
{{ [1, 2, 3]|join('|') }}
{# returns 1|2|3 #}
{{ [1, 2, 3]|join }}
{# returns 123 #}
{{ [1, 2, 3]|join('|') }}
{# returns 1|2|3 #}
reverse 過濾器
反轉一個數組,或者是一個實現了Iterator接口的對象
{% for use in users|reverse %}
...
{% endfor %}
{% for use in users|reverse %}
...
{% endfor %}
length過濾器
返回一個數組或者字符串的長度
{% if users|length > 10 %}
...
{% endif %}
{% if users|length > 10 %}
...
{% endif %}
sort過濾器
使用的是sort函數
{% for use in users|sort %}
...
{% endfor %}
{% for use in users|sort %}
...
{% endfor %}
default過濾器
當變量沒定義或者為空的時候,返回預先設置的內容
{{ var|default('var is not defined') }}
{{ var.foo|default('foo item on var is not defined') }}
{{ var['foo']|default('foo item on var is not defined') }}
{{ ''|default('passed var is empty') }}
{{ var|default('var is not defined') }}
{{ var.foo|default('foo item on var is not defined') }}
{{ var['foo']|default('foo item on var is not defined') }}
{{ ''|default('passed var is empty') }}
keys過濾器
返回key數組
{% for key in array|keys %}
...
{% endfor %}
{% for key in array|keys %}
...
{% endfor %}
escape過濾器
主要轉義 & < > ' " 。並且它有個簡寫方式 e。
{{ user.username|escape }}
{{ user.username|e }}
{{ user.username|escape }}
{{ user.username|e }}還可以轉義 js
{{ user.username|escape('js') }}
{{ user.username|e('js') }}
{{ user.username|escape('js') }}
{{ user.username|e('js') }}實際上他使用的是php函數 htmlspecialchars
raw過濾器
用於在autoescape標簽內部,標記出不需要轉義的內容。
{% autoescape true %}
{{ var|raw }} {# var won't be escaped #}
{% endautoescape %}
{% autoescape true %}
{{ var|raw }} {# var won't be escaped #}
{% endautoescape %}
merge過濾器
用來合並數組
{% set items = { 'apple': 'fruit', 'orange': 'fruit' } %}
{% set itemsitems = items|merge({ 'peugeot': 'car' }) %}
{# items now contains { 'apple': 'fruit', 'orange': 'fruit', 'peugeot': 'car' } #}
摘自 jiaochangyun的專欄