1 |
cvsjoko |
1.1 |
<?php |
2 |
|
|
|
3 |
|
|
/* |
4 |
|
|
* Smarty plugin |
5 |
|
|
* ------------------------------------------------------------ |
6 |
|
|
* Type: modifier |
7 |
|
|
* Name: escape |
8 |
|
|
* Purpose: Escape the string according to escapement type |
9 |
|
|
* ------------------------------------------------------------ |
10 |
|
|
*/ |
11 |
|
|
function smarty_modifier_escape($string, $esc_type = 'html') |
12 |
|
|
{ |
13 |
|
|
switch ($esc_type) { |
14 |
|
|
case 'html': |
15 |
|
|
return htmlspecialchars($string, ENT_QUOTES); |
16 |
|
|
|
17 |
|
|
case 'htmlall': |
18 |
|
|
return htmlentities($string, ENT_QUOTES); |
19 |
|
|
|
20 |
|
|
case 'url': |
21 |
|
|
return urlencode($string); |
22 |
|
|
|
23 |
|
|
case 'quotes': |
24 |
|
|
// escape unescaped single quotes |
25 |
|
|
return preg_replace("%(?<!\\\\)'%", "\\'", $string); |
26 |
|
|
|
27 |
|
|
case 'hex': |
28 |
|
|
// escape every character into hex |
29 |
|
|
for ($x=0; $x < strlen($string); $x++) { |
30 |
|
|
$return .= '%' . bin2hex($string[$x]); |
31 |
|
|
} |
32 |
|
|
return $return; |
33 |
|
|
|
34 |
|
|
case 'hexentity': |
35 |
|
|
for ($x=0; $x < strlen($string); $x++) { |
36 |
|
|
$return .= '&#x' . bin2hex($string[$x]) . ';'; |
37 |
|
|
} |
38 |
|
|
return $return; |
39 |
|
|
|
40 |
|
|
default: |
41 |
|
|
return $string; |
42 |
|
|
} |
43 |
|
|
} |
44 |
|
|
|
45 |
|
|
/* vim: set expandtab: */ |
46 |
|
|
|
47 |
|
|
?> |