<table summary="Header navigation table" width="100%" border="0" cellpadding="0" cellspacing="0"><tr><th colspan="3" align="center">Smarty - the compiling PHP template engine</th></tr><tr><td width="25%" align="left" valign="bottom"><a href="plugins.prefilters.postfilters.html" accesskey="P">Prev</a></td><td width="50%" align="center" valign="bottom">Chapter 16. Extending Smarty With Plugins</td><td width="25%" align="right" valign="bottom"><a href="plugins.resources.html" accesskey="N">Next</a></td></tr></table> # Output Filters[输出过滤器] Output filter plugins operate on a template's output, after the template is loaded and executed, but before the output is displayed. 输出过滤器插件作用于模板输出,它的处理处于模板加载执行之后,而在输出被显示之前。 > string smarty_outputfilter_name($template_output, &$smarty); string $template_output; object &$smarty; The first parameter to the output filter function is the template output that needs to be processed, and the second parameter is the instance of Smarty invoking the plugin. The plugin is supposed to do the processing and return the results. 输出过滤器函数第一个参数是需要处理的模板输出,第二个参数是调用这个插件的Smarty实例。此插件将会对输出进行处理并返回相应的结果。 <table width="80%" border="0" cellpadding="2" cellspacing="2" class="note"><caption> 译注 </caption> <tr><td><p>模板、输出过滤器的关系如下:</p> <p><img src="https://box.kancloud.cn/2015-09-02_55e669a1c52f1.gif" width="422" height="115"/></p></td> </tr></table> <table width="100%" border="0" cellpadding="0" cellspacing="0" class="EXAMPLE"><tr><td><div class="EXAMPLE"><a name="AEN4094"/><b>Example 16.9. An output filter plugin<br/>例16-9.输出过滤器插件</b><table border="0" bgcolor="#E0E0E0" width="100%"><tr><td><pre class="PROGRAMLISTING">&lt;?php/* * Smarty plugin * ------------------------------------------------------------- * File: outputfilter.protect_email.php * Type: outputfilter * Name: protect_email * Purpose: Converts @ sign in email addresses to %40 as * a simple protection against spambots * ------------------------------------------------------------- */ function smarty_outputfilter_protect_email($output, $smarty) { return preg_replace('!(\S+)@([a-zA-Z0-9\.\-]+\.([a-zA-Z]{2,3}|[0-9]{1,3}))!','$1%40$2', $output); }?&gt;</pre></td></tr></table><p> 参见<a href="api.registerfilter.html">registerFilter()</a>、<a href="api.unregisterfilter.html">unregisterFilter()</a>。</p></div></td></tr></table> <table summary="Footer navigation table" width="100%" border="0" cellpadding="0" cellspacing="0"><tr><td width="33%" align="left" valign="top"><a href="plugins.prefilters.postfilters.html" accesskey="P">Prev</a></td><td width="34%" align="center" valign="top"><a href="index.html" accesskey="H">Home</a></td><td width="33%" align="right" valign="top"><a href="plugins.resources.html" accesskey="N">Next</a></td></tr><tr><td width="33%" align="left" valign="top">Prefilters/Postfilters<br/> 预滤器/后滤器</td><td width="34%" align="center" valign="top"><a href="plugins.html" accesskey="U">Up</a></td><td width="33%" align="right" valign="top">Resources<br/> 资源</td></tr></table>