Smarty輸出濾鏡


Output Filters

輸出濾鏡

 

當模板通過函式 display() 或者 fetch()被呼叫時,它的輸出能夠通過一個或者多個濾鏡而發出。 它與預過濾器的不同之處就是預過濾器編譯模板是在模板儲存到磁碟之前,輸出濾鏡是在它執行的時候才操作模板輸出的。

Output filters can be either registered or loaded from the plugins directory by using load_filter() function or by setting $autoload_filters variable. Smarty will pass the template output as the first argument, and expect the function to return the result of the processing.

輸出濾鏡同樣能夠通過 load filter() 函式和設定 $autoload filters 變數來註冊或者從工具目錄裡載入。SMARTY將傳遞模板輸出作為第一個引數,通過自定義函式返回處理結果。


Example 15-4. using a template outputfilter -/5/60/1802.html

<?php
// put this in your application
function protect_email($tpl_output, &$smarty)
{
 $tpl_output =
 preg_replace('!(\S+)@([a-zA-Z0-9\.\-]+\.([a-zA-Z]{2,3}|[0-9]{1,3}))!',
 '$1%40$2', $tpl_output);
 return $tpl_output;
}

// register the outputfilter  $smarty->register_outputfilter("protect_email");
$smarty->display("index.tpl");

// now any occurrence of an email address in the template output will have
// a simple protection against spambots
?>