modifier.escape.php
上传用户:xjjlds
上传日期:2015-12-05
资源大小:22823k
文件大小:3k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. <?php
  2. /**
  3.  * Smarty plugin
  4.  * @package Smarty
  5.  * @subpackage plugins
  6.  */
  7. /**
  8.  * Smarty escape modifier plugin
  9.  *
  10.  * Type:     modifier<br>
  11.  * Name:     escape<br>
  12.  * Purpose:  Escape the string according to escapement type
  13.  * @link http://smarty.php.net/manual/en/language.modifier.escape.php
  14.  *          escape (Smarty online manual)
  15.  * @param string
  16.  * @param html|htmlall|url|quotes|hex|hexentity|javascript
  17.  * @return string
  18.  */
  19. function smarty_modifier_escape($string, $esc_type = 'html')
  20. {
  21.     switch ($esc_type) {
  22.         case 'html':
  23.             return htmlspecialchars($string, ENT_QUOTES);
  24.         case 'htmlall':
  25.             return htmlentities($string, ENT_QUOTES);
  26.         case 'url':
  27.             return urlencode($string);
  28.         case 'quotes':
  29.             // escape unescaped single quotes
  30.             return preg_replace("%(?<!\\)'%", "\'", $string);
  31.         case 'hex':
  32.             // escape every character into hex
  33.             $return = '';
  34.             for ($x=0; $x < strlen($string); $x++) {
  35.                 $return .= '%' . bin2hex($string[$x]);
  36.             }
  37.             return $return;
  38.             
  39.         case 'hexentity':
  40.             $return = '';
  41.             for ($x=0; $x < strlen($string); $x++) {
  42.                 $return .= '&#x' . bin2hex($string[$x]) . ';';
  43.             }
  44.             return $return;
  45.         case 'decentity':
  46.             $return = '';
  47.             for ($x=0; $x < strlen($string); $x++) {
  48.                 $return .= '&#' . ord($string[$x]) . ';';
  49.             }
  50.             return $return;
  51.         case 'javascript':
  52.             // escape quotes and backslashes, newlines, etc.
  53.             return strtr($string, array('\'=>'\\',"'"=>"\'",'"'=>'\"',"r"=>'\r',"n"=>'\n','</'=>'</'));
  54.             
  55.         case 'mail':
  56.             // safe way to display e-mail address on a web page
  57.             return str_replace(array('@', '.'),array(' [AT] ', ' [DOT] '), $string);
  58.             
  59.         case 'nonstd':
  60.            // escape non-standard chars, such as ms document quotes
  61.            $_res = '';
  62.            for($_i = 0, $_len = strlen($string); $_i < $_len; $_i++) {
  63.                $_ord = ord($string{$_i});
  64.                // non-standard char, escape it
  65.                if($_ord >= 126){
  66.                    $_res .= '&#' . $_ord . ';';
  67.                }
  68.                else {
  69.                    $_res .= $string{$_i};
  70.                }
  71.            }
  72.            return $_res;
  73.         default:
  74.             return $string;
  75.     }
  76. }
  77. /* vim: set expandtab: */
  78. ?>