PhpRiot
Follow phpriot on Twitter
Sponsored Link
Become Zend Certified

Prepare for the ZCE exam using our quizzes (web or iPad/iPhone). More info...


When you're ready get 7.5% off your exam voucher using voucher CJQNOV23 at the Zend Store
Free iPad/iPhone App
Available on the App Store

  • PHP manual
  • Zend Framework manual
  • Smarty manual
  • PHP articles
  • PHP training

Output Filters

When the template is invoked via display() or fetch(), its output can be sent through one or more output filters. This differs from postfilters because postfilters operate on compiled templates before they are saved to the disk, whereas output filters operate on the template output when it is executed.

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

Example 220. Using a template outputfilter



<?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->registerFilter("output","protect_email");
$smarty->display("index.tpl');

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

    

See also registerFilter(), loadFilter(), $autoload_filters, postfilters and $plugins_dir.

Smarty Template Engine