[ Index ]

PHP Cross Reference of Nucleus CMS 3.32

title

Body

[close]

/nucleus/libs/ -> entity.php (source)

   1  <?php
   2  
   3  class entity {
   4  
   5  	function named_to_numeric ($string) {
   6          $string = preg_replace('/(&[0-9A-Za-z]+)(;?\=?|([^A-Za-z0-9\;\:\.\-\_]))/e', "entity::_named('\\1', '\\2') . '\\3'", $string);
   7          return $string;    
   8      }
   9      
  10  	function normalize_numeric ($string) {
  11          global $_entities;
  12          $string = preg_replace('/&#([0-9]+)(;)?/e', "'&#x'.dechex('\\1').';'", $string);
  13          $string = preg_replace('/&#[Xx](0)*([0-9A-Fa-f]+)(;?|([^A-Za-z0-9\;\:\.\-\_]))/e', "'&#x' . strtoupper('\\2') . ';\\4'", $string);
  14          $string = strtr($string, $_entities['cp1251']);
  15          return $string;
  16      }
  17   
  18  	function numeric_to_utf8 ($string) {
  19          $string = preg_replace('/&#([0-9]+)(;)?/e', "'&#x'.dechex('\\1').';'", $string);
  20          $string = preg_replace('/&#[Xx](0)*([0-9A-Fa-f]+)(;?|([^A-Za-z0-9\;\:\.\-\_]))/e', "'&#x' . strtoupper('\\2') . ';\\4'", $string);
  21          $string = preg_replace('/&#x([0-9A-Fa-f]+);/e', "entity::_hex_to_utf8('\\1')", $string);        
  22          return $string;     
  23      }
  24  
  25  	function numeric_to_named ($string) {
  26          global $_entities;
  27          $string = preg_replace('/&#[Xx]([0-9A-Fa-f]+)/e', "'&#'.hexdec('\\1')", $string);
  28          $string = strtr($string, array_flip($_entities['named']));
  29          return $string;    
  30      }
  31      
  32  	function specialchars ($string, $type = 'xml') {
  33          $apos = $type == 'xml' ? '&apos;' : '&#39;';
  34          $specialchars = array (
  35              '&quot;'    => '&quot;',        '&amp;'       => '&amp;',          
  36              '&apos;'      => $apos,            '&lt;'      => '&lt;',        
  37              '&gt;'        => '&gt;',            '"'            => '&quot;',
  38              '&'            => '&amp;',            "'"            => $apos,
  39              '<'            => '&lt;',            '>'            => '&gt;'
  40          );
  41      
  42          $string = preg_replace('/&(#?[Xx]?[0-9A-Za-z]+);/', "[[[ENTITY:\\1]]]", $string);        
  43          $string = strtr($string, $specialchars);
  44          $string = preg_replace('/\[\[\[ENTITY\:([^\]]+)\]\]\]/', "&\\1;", $string);        
  45          return $string;
  46      }
  47      
  48  
  49  	function _hex_to_utf8($s)
  50      {
  51          $c = hexdec($s);
  52      
  53          if ($c < 0x80) {
  54              $str = chr($c);
  55          }
  56          else if ($c < 0x800) {
  57              $str = chr(0xC0 | $c>>6) . chr(0x80 | $c & 0x3F);
  58          }
  59          else if ($c < 0x10000) {
  60              $str = chr(0xE0 | $c>>12) . chr(0x80 | $c>>6 & 0x3F) . chr(0x80 | $c & 0x3F);
  61          }
  62          else if ($c < 0x200000) {
  63              $str = chr(0xF0 | $c>>18) . chr(0x80 | $c>>12 & 0x3F) . chr(0x80 | $c>>6 & 0x3F) . chr(0x80 | $c & 0x3F);
  64          }
  65                  
  66          return $str;
  67      }         
  68  
  69  	function _named($entity, $extra) {
  70          global $_entities;
  71          
  72          if ($extra == '=') return $entity . '=';
  73          
  74          $length = strlen($entity);
  75  
  76          while ($length > 0) {
  77              $check = substr($entity, 0, $length);
  78              if (isset($_entities['named'][$check])) return $_entities['named'][$check] . ';' . substr($entity, $length);
  79              $length--;
  80          }
  81          
  82          return $entity . ($extra == ';' ? ';' : '');
  83      }
  84  }
  85  
  86  
  87  $_entities['cp1251'] = array (
  88      '&#x80;'         => '&#x20AC;',    '&#x82;'         => '&#x201A;',    '&#x83;'         => '&#x192;',    
  89      '&#x84;'         => '&#x201E;',    '&#x85;'         => '&#x2026;',    '&#x86;'         => '&#x2020;',    
  90      '&#x87;'         => '&#x2021;',    '&#x88;'         => '&#x2C6;',    '&#x89;'         => '&#x2030;',    
  91      '&#x8A;'         => '&#x160;',    '&#x8B;'         => '&#x2039;',    '&#x8C;'         => '&#x152;',    
  92      '&#x8E;'         => '&#x17D;',    '&#x91;'         => '&#x2018;',    '&#x92;'         => '&#x2019;',    
  93      '&#x93;'         => '&#x201C;',    '&#x94;'         => '&#x201D;',    '&#x95;'         => '&#x2022;',    
  94      '&#x96;'         => '&#x2013;',    '&#x97;'         => '&#x2014;',    '&#x98;'         => '&#x2DC;',    
  95      '&#x99;'         => '&#x2122;',    '&#x9A;'         => '&#x161;',    '&#x9B;'         => '&#x203A;',    
  96      '&#x9C;'         => '&#x153;',    '&#x9E;'         => '&#x17E;',    '&#x9F;'         => '&#x178;',    
  97  );
  98      
  99  $_entities['named'] = array (
 100      '&nbsp'         => '&#160',        '&iexcl'        => '&#161',        '&cent'         => '&#162',    
 101      '&pound'         => '&#163',        '&curren'        => '&#164',        '&yen'             => '&#165',    
 102      '&brvbar'        => '&#166',     '&sect'         => '&#167',        '&uml'             => '&#168',    
 103      '&copy'         => '&#169',        '&ordf'         => '&#170',        '&laquo'         => '&#171',    
 104      '&not'             => '&#172',        '&shy'             => '&#173',        '&reg'             => '&#174',    
 105      '&macr'         => '&#175',        '&deg'             => '&#176',        '&plusmn'         => '&#177',    
 106      '&sup2'         => '&#178',        '&sup3'         => '&#179',     '&acute'         => '&#180',    
 107      '&micro'         => '&#181',     '&para'         => '&#182',        '&middot'         => '&#183',    
 108      '&cedil'         => '&#184',     '&sup1'         => '&#185',        '&ordm'         => '&#186',    
 109      '&raquo'         => '&#187',        '&frac14'         => '&#188',        '&frac12'         => '&#189',    
 110      '&frac34'         => '&#190',        '&iquest'         => '&#191',        '&Agrave'         => '&#192',    
 111      '&Aacute'         => '&#193',        '&Acirc'         => '&#194',        '&Atilde'         => '&#195',    
 112      '&Auml'         => '&#196',        '&Aring'         => '&#197',        '&AElig'         => '&#198',    
 113      '&Ccedil'        => '&#199',     '&Egrave'         => '&#200',        '&Eacute'         => '&#201',    
 114      '&Ecirc'         => '&#202',        '&Euml'         => '&#203',        '&Igrave'         => '&#204',    
 115      '&Iacute'         => '&#205',        '&Icirc'         => '&#206',        '&Iuml'         => '&#207',     
 116      '&ETH'             => '&#208',        '&Ntilde'         => '&#209',        '&Ograve'         => '&#210',    
 117      '&Oacute'        => '&#211',        '&Ocirc'         => '&#212',        '&Otilde'         => '&#213',    
 118      '&Ouml'         => '&#214',        '&times'         => '&#215',        '&Oslash'         => '&#216',    
 119      '&Ugrave'         => '&#217',        '&Uacute'         => '&#218',        '&Ucirc'         => '&#219',    
 120      '&Uuml'         => '&#220',        '&Yacute'         => '&#221',        '&THORN'         => '&#222',    
 121      '&szlig'         => '&#223',        '&agrave'         => '&#224',        '&aacute'         => '&#225',    
 122      '&acirc'         => '&#226',        '&atilde'         => '&#227',        '&auml'         => '&#228',    
 123      '&aring'         => '&#229',        '&aelig'         => '&#230',        '&ccedil'         => '&#231',    
 124      '&egrave'         => '&#232',        '&eacute'         => '&#233',        '&ecirc'         => '&#234',    
 125      '&euml'         => '&#235',        '&igrave'         => '&#236',        '&iacute'         => '&#237',    
 126      '&icirc'         => '&#238',        '&iuml'         => '&#239',        '&eth'             => '&#240',    
 127      '&ntilde'         => '&#241',        '&ograve'         => '&#242',        '&oacute'         => '&#243',    
 128      '&ocirc'         => '&#244',        '&otilde'         => '&#245',        '&ouml'         => '&#246',    
 129      '&divide'         => '&#247',        '&oslash'         => '&#248',        '&ugrave'         => '&#249',    
 130      '&uacute'         => '&#250',        '&ucirc'         => '&#251',        '&uuml'         => '&#252',    
 131      '&yacute'         => '&#253',        '&thorn'         => '&#254',        '&yuml'         => '&#255',    
 132      '&OElig'        => '&#338',        '&oelig'        => '&#229',        '&Scaron'        => '&#352',    
 133      '&scaron'        => '&#353',        '&Yuml'            => '&#376',        '&circ'            => '&#710',    
 134      '&tilde'        => '&#732',     '&esnp'            => '&#8194',    '&emsp'            => '&#8195',    
 135      '&thinsp'        => '&#8201',    '&zwnj'            => '&#8204',    '&zwj'            => '&#8205',    
 136      '&lrm'            => '&#8206',    '&rlm'            => '&#8207',     '&ndash'        => '&#8211',     
 137      '&mdash'        => '&#8212',    '&lsquo'        => '&#8216',    '&rsquo'        => '&#8217',     
 138      '&sbquo'        => '&#8218',    '&ldquo'        => '&#8220',     '&rdquo'        => '&#8221',    
 139      '&bdquo'        => '&#8222',    '&dagger'        => '&#8224',    '&Dagger'        => '&#8225',    
 140      '&permil'        => '&#8240',    '&lsaquo'        => '&#8249',    '&rsaquo'        => '&#8250',
 141      '&euro'            => '&#8364',    '&fnof'            => '&#402',        '&Alpha'        => '&#913',    
 142      '&Beta'            => '&#914',        '&Gamma'        => '&#915',        '&Delta'        => '&#916',    
 143      '&Epsilon'        => '&#917',        '&Zeta'            => '&#918',        '&Eta'            => '&#919',    
 144      '&Theta'        => '&#920',        '&Iota'            => '&#921',        '&Kappa'        => '&#922',    
 145      '&Lambda'        => '&#923',        '&Mu'            => '&#924',        '&Nu'            => '&#925',    
 146      '&Xi'            => '&#926',        '&Omicron'        => '&#927',        '&Pi'            => '&#928',    
 147      '&Rho'            => '&#929',        '&Sigma'        => '&#931',        '&Tau'            => '&#932',    
 148      '&Upsilon'        => '&#933',     '&Phi'            => '&#934',        '&Chi'            => '&#935',    
 149      '&Psi'            => '&#936',        '&Omega'        => '&#937',        '&alpha'        => '&#945',    
 150      '&beta'            => '&#946',        '&gamma'        => '&#947',        '&delta'        => '&#948',    
 151      '&epsilon'        => '&#949',        '&zeta'            => '&#950',        '&eta'            => '&#951',    
 152      '&theta'        => '&#952',        '&iota'            => '&#953',        '&kappa'        => '&#954',    
 153      '&lambda'        => '&#955',        '&mu'            => '&#956',        '&nu'            => '&#957',    
 154      '&xi'            => '&#958',        '&omicron'        => '&#959',        '&pi'            => '&#960',    
 155      '&rho'            => '&#961',        '&sigmaf'        => '&#962',        '&sigma'        => '&#963',    
 156      '&tau'            => '&#964',        '&upsilon'        => '&#965',     '&phi'            => '&#966',    
 157      '&chi'            => '&#967',        '&psi'            => '&#968',        '&omega'        => '&#969',    
 158      '&thetasym'        => '&#977',        '&upsih'        => '&#978',        '&piv'            => '&#982',    
 159      '&bull'            => '&#8226',    '&hellip'        => '&#8230',    '&prime'        => '&#8242',    
 160      '&Prime'        => '&#8243',    '&oline'        => '&#8254',     '&frasl'        => '&#8260',    
 161      '&weierp'        => '&#8472',     '&image'        => '&#8465',     '&real'            => '&#8476',    
 162      '&trade'        => '&#8482',     '&alefsym'         => '&#8501',     '&larr'            => '&#8592',     
 163      '&uarr'            => '&#8593',     '&rarr'            => '&#8594',    '&darr'            => '&#8595',     
 164      '&harr'            => '&#8596',    '&crarr'        => '&#8629',    '&lArr'            => '&#8656',    
 165      '&uArr'            => '&#8657',     '&rArr'            => '&#8658',     '&dArr'            => '&#8659',     
 166      '&hArr'            => '&#8660',     '&forall'        => '&#8704',     '&part'            => '&#8706',     
 167      '&exist'        => '&#8707',     '&empty'        => '&#8709',     '&nabla'        => '&#8711',     
 168      '&isin'            => '&#8712',     '&notin'        => '&#8713',     '&ni'            => '&#8715',     
 169      '&prod'            => '&#8719',     '&sum'            => '&#8721',     '&minus'        => '&#8722',     
 170      '&lowast'        => '&#8727',     '&radic'        => '&#8730',     '&prop'            => '&#8733',     
 171      '&infin'        => '&#8734',     '&ang'            => '&#8736',     '&and'            => '&#8743',     
 172      '&or'            => '&#8744',     '&cap'            => '&#8745',     '&cup'            => '&#8746',     
 173      '&int'            => '&#8747',     '&there4'        => '&#8756',     '&sim'            => '&#8764',     
 174      '&cong'            => '&#8773',     '&asymp'        => '&#8776',     '&ne'            => '&#8800',     
 175      '&equiv'        => '&#8801',     '&le'            => '&#8804',     '&ge'            => '&#8805',     
 176      '&sub'            => '&#8834',     '&sup'            => '&#8835',     '&nsub'            => '&#8836',     
 177      '&sube'            => '&#8838',     '&supe'            => '&#8839',     '&oplus'        => '&#8853',     
 178      '&otimes'          => '&#8855',     '&perp'            => '&#8869',     '&sdot'            => '&#8901',     
 179      '&lceil'        => '&#8968',     '&rceil'        => '&#8969',     '&lfloor'        => '&#8970',     
 180      '&rfloor'        => '&#8971',     '&lang'            => '&#9001',     '&rang'            => '&#9002',     
 181      '&loz'            => '&#9674',     '&spades'        => '&#9824',     '&clubs'        => '&#9827',     
 182      '&hearts'        => '&#9829',     '&diams'        => '&#9830',     
 183  );
 184  
 185  
 186  ?>


Generated: Tue Feb 12 15:34:36 2008 Cross-referenced by PHPXref 0.7