2002-01-31 20:49:40 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Smarty plugin
|
|
|
|
|
* ------------------------------------------------------------
|
|
|
|
|
* Type: modifier
|
|
|
|
|
* Name: escape
|
|
|
|
|
* Purpose: Escape the string according to escapement type
|
|
|
|
|
* ------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
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 14:58:36 +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 14:58:36 +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
|
|
|
|
|
return str_replace(array('\\','\'',"\r","\n"), array("\\\\", "\\'",'\r','\r'), $string);
|
|
|
|
|
|
2002-01-31 20:49:40 +00:00
|
|
|
default:
|
|
|
|
|
return $string;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* vim: set expandtab: */
|
|
|
|
|
|
|
|
|
|
?>
|