2002-01-31 20:49:40 +00:00
|
|
|
<?php
|
2003-04-20 21:12:13 +00:00
|
|
|
/**
|
2002-01-31 20:49:40 +00:00
|
|
|
* Smarty plugin
|
2003-04-20 21:12:13 +00:00
|
|
|
* @package Smarty
|
|
|
|
|
* @subpackage plugins
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Smarty escape modifier plugin
|
|
|
|
|
*
|
|
|
|
|
* Type: modifier<br>
|
|
|
|
|
* Name: escape<br>
|
2002-01-31 20:49:40 +00:00
|
|
|
* Purpose: Escape the string according to escapement type
|
2003-04-20 21:12:13 +00:00
|
|
|
* @link http://smarty.php.net/manual/en/language.modifier.escape.php
|
|
|
|
|
* escape (Smarty online manual)
|
|
|
|
|
* @param string
|
|
|
|
|
* @param html|htmlall|url|quotes|hex|hexentity|javascript
|
|
|
|
|
* @return string
|
2002-01-31 20:49:40 +00:00
|
|
|
*/
|
|
|
|
|
function smarty_modifier_escape($string, $esc_type = 'html')
|
|
|
|
|
{
|
|
|
|
|
switch ($esc_type) {
|
|
|
|
|
case 'html':
|
|
|
|
|
return htmlspecialchars($string, ENT_QUOTES);
|
|
|
|
|
|
2002-04-04 20:34:44 +00:00
|
|
|
case 'htmlall':
|
|
|
|
|
return htmlentities($string, ENT_QUOTES);
|
|
|
|
|
|
2002-01-31 20:49:40 +00:00
|
|
|
case 'url':
|
|
|
|
|
return urlencode($string);
|
|
|
|
|
|
|
|
|
|
case 'quotes':
|
|
|
|
|
// escape unescaped single quotes
|
|
|
|
|
return preg_replace("%(?<!\\\\)'%", "\\'", $string);
|
|
|
|
|
|
2002-02-20 20:56:53 +00:00
|
|
|
case 'hex':
|
|
|
|
|
// escape every character into hex
|
2003-02-17 21:13:32 +00:00
|
|
|
$return = '';
|
2002-02-20 22:24:32 +00:00
|
|
|
for ($x=0; $x < strlen($string); $x++) {
|
|
|
|
|
$return .= '%' . bin2hex($string[$x]);
|
2002-02-20 20:56:53 +00:00
|
|
|
}
|
|
|
|
|
return $return;
|
2002-02-20 22:24:32 +00:00
|
|
|
|
2002-02-20 20:56:53 +00:00
|
|
|
case 'hexentity':
|
2003-02-17 21:13:32 +00:00
|
|
|
$return = '';
|
2002-02-20 22:24:32 +00:00
|
|
|
for ($x=0; $x < strlen($string); $x++) {
|
|
|
|
|
$return .= '&#x' . bin2hex($string[$x]) . ';';
|
2002-02-20 20:56:53 +00:00
|
|
|
}
|
|
|
|
|
return $return;
|
2002-02-20 22:24:32 +00:00
|
|
|
|
2003-01-06 23:15:27 +00:00
|
|
|
case 'javascript':
|
|
|
|
|
// escape quotes and backslashes and newlines
|
2003-05-07 13:24:43 +00:00
|
|
|
return str_replace(array('\\','\'',"\r","\n"), array("\\\\", "\\'",'\r','\n'), $string);
|
2003-01-06 23:15:27 +00:00
|
|
|
|
2002-01-31 20:49:40 +00:00
|
|
|
default:
|
|
|
|
|
return $string;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* vim: set expandtab: */
|
|
|
|
|
|
|
|
|
|
?>
|