Improved Smarty strip_tags Modifier Plugin
I wrote this because I wanted to incorporate normal php strip_tags functionality into the Smarty modifier. I structured it so it would retain backwards compatibility with the original Smarty strip_tags modifier. You should be able to drop it into your plugins folder and run with it (name the file modifier.strip_tags.php).
/** * Smarty plugin * @package Smarty * @subpackage plugins */ /** * Smarty strip_tags modifier plugin * * Type: modifier * Name: strip_tags * Purpose: strip html tags from text * @link http://www.smarty.net/manual/en/language.modifier.strip.tags.php * strip_tags (Smarty online manual) * * @author Monte Ohrt* @author Jordon Mears * * @version 2.0 * * @param string * @param boolean optional * @param string optional * @return string */ function smarty_modifier_strip_tags($string) { switch(func_num_args()) { case 1: $replace_with_space = true; break; case 2: $arg = func_get_arg(1); if($arg === 1 || $arg === true || $arg === '1' || $arg === 'true') { // for full legacy support || $arg === 'false' should be included $replace_with_space = true; $allowable_tags = ''; } elseif($arg === 0 || $arg === false || $arg === '0' || $arg === 'false') { // for full legacy support || $arg === 'false' should be removed $replace_with_space = false; $allowable_tags = ''; } else { $replace_with_space = true; $allowable_tags = $arg; } break; case 3: $replace_with_space = func_get_arg(1); $allowable_tags = func_get_arg(2); break; } if($replace_with_space) { $string = preg_replace('!(<[^>]*?>)!', '$1 ', $string); } $string = strip_tags($string, $allowable_tags); if($replace_with_space) { $string = preg_replace('!(<[^>]*?>) !', '$1', $string); } return $string; } /* vim: set expandtab: */
Two examples of same as always:
{$var|strip_tags}
{$var|strip_tags:false}
An example of php style strip_tags (will leave b and p tags):
{$var|strip_tags:'<b><p>'}
An example of both old and new functionality together:
{$var|strip_tags:false:'<b><p>'}
The original plugin (and therefore this plugin) is licensed under the LGPL.
Here is the link to its place on the Smarty plugin wiki.
http://smarty.incutio.com/?page=StripTags

