rtoss - Blame information for rev 39

Subversion Repositories:
Rev:
Rev Author Line No. Line
9 roytam 1 <?php
2 include_once("./u2utf8.php");
3  
4 # Russian
39 roytam 5    function ru2utf8($ru,$RefCode=1){
9 roytam 6         for ($i=0; $i < strlen($ru); $i++){
7             $thischar=substr($ru,$i,1);
8             $charcode=ord($thischar);
9             if ($charcode==168){
10                 $utfchar=(26*32+3+12+10+($charcode));
11             }elseif ($charcode==184){
12                 $utfchar=(26*32+3+12+10+60+4+($charcode));
13             }elseif(($charcode>=192) and ($charcode<=255)){
14                 $utfchar=(26*32+3+12+1+($charcode));
15             }else{
16                 $uniline.=$thischar;
17             }
18             if ($utfchar) {
19                 if (!$RefCode) $uniline.=u2utf8($utfchar);
20                 else $uniline.="&#".$utfchar.";";
21             }
22             $utfchar='';
23         }
24         return $uniline;
25     }
26  
27 # Hebrew
28         function heb2utf8($s,$RefCode=1) {
29                 $l=strlen($s);
30                 $o="";
31                 for($i=0;$i<$l;$i++) {
32                         $c=ord($s[$i]);
33                         $o.=$c>223&&$c<251?($RefCode?'&#'.(1264+$c).';':u2utf8((1264+$c))):chr($c);
34                 }
35                 return $o;
36         }
37  
38 #Windows Symbol
39 roytam 39         function ws2utf8($ws,$RefCode=1){
9 roytam 40                 for ($i=0; $i < strlen($ws); $i++){
41                         $thischar=substr($ws,$i,1);
42                         $charcode=ord($thischar);
43                         $uniline.=$RefCode?"&#".(61440+($charcode)).";":u2utf8((61440+($charcode)));
44                 }
45                 return $uniline;
46         }
47  
48 #UTF-8 to Unicode
49         function utf82u($str,$RefCode=1) {
50  
51         $unicode = array();
52         $values = array();
53         $lookingFor = 1;
54  
55         for ($i = 0; $i < strlen( $str ); $i++ ) {
56             $thisValue = ord( $str[ $i ] );
57             if ( $thisValue < 128 ) $unicode[] = $thisValue;
58             else {
59                 if ( count( $values ) == 0 ) $lookingFor = ( $thisValue < 224 ) ? 2 : 3;
60                 $values[] = $thisValue;
61                 if ( count( $values ) == $lookingFor ) {
62                     $number = ( $lookingFor == 3 ) ?
63                         ( ( $values[0] % 16 ) * 4096 ) + ( ( $values[1] % 64 ) * 64 ) + ( $values[2] % 64 ):
64                         ( ( $values[0] % 32 ) * 64 ) + ( $values[1] % 64 );
65                     $unicode[] = $number;
66                     $values = array();
67                     $lookingFor = 1;
68                 } // if
69             } // if
70         } // for
71  
72                 if ($RefCode) {
73                         $entities = '';
74                 foreach( $unicode as $value ) $entities .= ( $value > 127 ) ? '&#' . $value . ';' : chr( $value );
75                 return $entities;
76                 } else {
77                         $wchars = '';
39 roytam 78                 foreach( $unicode as $value ) $wchars .= u2utf8($value);
9 roytam 79                 return $wchars;
80                 }
81         }
82  
83 ?>