mirror of
https://github.com/moodle/moodle.git
synced 2025-02-08 17:11:49 +01:00
64 lines
1.6 KiB
PHP
64 lines
1.6 KiB
PHP
<?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)
|
|
* @param string
|
|
* @param html|htmlall|url|quotes|hex|hexentity|javascript
|
|
* @return string
|
|
*/
|
|
function smarty_modifier_escape($string, $esc_type = 'html')
|
|
{
|
|
switch ($esc_type) {
|
|
case 'html':
|
|
return htmlspecialchars($string, ENT_QUOTES);
|
|
|
|
case 'htmlall':
|
|
return htmlentities($string, ENT_QUOTES);
|
|
|
|
case 'url':
|
|
return urlencode($string);
|
|
|
|
case 'quotes':
|
|
// escape unescaped single quotes
|
|
return 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 'javascript':
|
|
// escape quotes and backslashes and newlines
|
|
return strtr($string, array('\\'=>'\\\\',"'"=>"\\'",'"'=>'\\"',"\r"=>'\\r',"\n"=>'\\n'));
|
|
|
|
default:
|
|
return $string;
|
|
}
|
|
}
|
|
|
|
/* vim: set expandtab: */
|
|
|
|
?>
|