You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							93 lines
						
					
					
						
							2.7 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							93 lines
						
					
					
						
							2.7 KiB
						
					
					
				
								<?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 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 '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 page
							 | 
						|
								            return 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 it
							 | 
						|
								               if($_ord >= 126){
							 | 
						|
								                   $_res .= '&#' . $_ord . ';';
							 | 
						|
								               }
							 | 
						|
								               else {
							 | 
						|
								                   $_res .= substr($string, $_i, 1);
							 | 
						|
								               }
							 | 
						|
								           }
							 | 
						|
								           return $_res;
							 | 
						|
								
							 | 
						|
								        default:
							 | 
						|
								            return $string;
							 | 
						|
								    }
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								/* vim: set expandtab: */
							 | 
						|
								
							 | 
						|
								?>
							 | 
						|
								
							 |