程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> Twig 的Filters學習

Twig 的Filters學習

編輯:關於PHP編程

目前支持的過濾器包括

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的專欄

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved