Blame | Letzte Änderung | Log anzeigen | RSS feed
<?php/*** Smarty plugin* @package Smarty* @subpackage plugins*//*** Smarty escape modifier plugin** Type: modifier<br>* Name: escape<br>* Purpose: Escape the string according to escapement type* @link http://smarty.php.net/manual/en/language.modifier.escape.php* escape (Smarty online manual)* @author Monte Ohrt <monte at ohrt dot com>* @param string* @param html|htmlall|url|quotes|hex|hexentity|javascript* @return string*/function smarty_modifier_escape($string, $esc_type = 'html', $char_set = 'ISO-8859-1'){switch ($esc_type) {case 'html':return htmlspecialchars($string, ENT_QUOTES, $char_set);case 'htmlall':return htmlentities($string, ENT_QUOTES, $char_set);case 'url':return rawurlencode($string);case 'urlpathinfo':return str_replace('%2F','/',rawurlencode($string));case 'quotes':// escape unescaped single quotesreturn preg_replace("%(?<!\\\\)'%", "\\'", $string);case 'hex':// escape every character into hex$return = '';for ($x=0; $x < strlen($string); $x++) {$return .= '%' . bin2hex($string[$x]);}return $return;case 'hexentity':$return = '';for ($x=0; $x < strlen($string); $x++) {$return .= '&#x' . bin2hex($string[$x]) . ';';}return $return;case 'decentity':$return = '';for ($x=0; $x < strlen($string); $x++) {$return .= '&#' . ord($string[$x]) . ';';}return $return;case 'javascript':// escape quotes and backslashes, newlines, etc.return strtr($string, array('\\'=>'\\\\',"'"=>"\\'",'"'=>'\\"',"\r"=>'\\r',"\n"=>'\\n','</'=>'<\/'));case 'mail':// safe way to display e-mail address on a web pagereturn str_replace(array('@', '.'),array(' [AT] ', ' [DOT] '), $string);case 'nonstd':// escape non-standard chars, such as ms document quotes$_res = '';for($_i = 0, $_len = strlen($string); $_i < $_len; $_i++) {$_ord = ord(substr($string, $_i, 1));// non-standard char, escape itif($_ord >= 126){$_res .= '&#' . $_ord . ';';}else {$_res .= substr($string, $_i, 1);}}return $_res;default:return $string;}}/* vim: set expandtab: */?>