OSDN Git Service

Update project date from '2002 - 2009' to '2002 - 2010'.
[nucleus-jp/nucleus-jp-ancient.git] / utf8 / nucleus / libs / entity.php
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 ?>