Файл: Dvig/tst.php
Строк: 98
<?php 
     //simple task: convert everything from utf-8 into an NCR[numeric character reference] 
     class unicode_replace_entities { 
         public function UTF8entities($content="") { 
             $contents = $this->unicode_string_to_array($content); 
             $swap = ""; 
             $iCount = count($contents); 
             for ($o=0;$o<$iCount;$o++) { 
                 $contents[$o] = $this->unicode_entity_replace($contents[$o]); 
                 $swap .= $contents[$o]; 
             } 
             return mb_convert_encoding($swap,"UTF-8"); //not really necessary, but why not. 
         } 
         public function unicode_string_to_array( $string ) { //adjwilli 
             $strlen = mb_strlen($string); 
             while ($strlen) { 
                 $array[] = mb_substr( $string, 0, 1, "UTF-8" ); 
                 $string = mb_substr( $string, 1, $strlen, "UTF-8" ); 
                 $strlen = mb_strlen( $string ); 
             } 
             return $array; 
         } 
         public function unicode_entity_replace($c) { //m. perez 
             $h = ord($c{0});    
             if ($h <= 0x7F) { 
                 return $c; 
             } else if ($h < 0xC2) { 
                 return $c; 
             } 
             
             if ($h <= 0xDF) { 
                 $h = ($h & 0x1F) << 6 | (ord($c{1}) & 0x3F); 
                 $h = "&#" . $h . ";"; 
                 return $h; 
             } else if ($h <= 0xEF) { 
                 $h = ($h & 0x0F) << 12 | (ord($c{1}) & 0x3F) << 6 | (ord($c{2}) & 0x3F); 
                 $h = "&#" . $h . ";"; 
                 return $h; 
             } else if ($h <= 0xF4) { 
                 $h = ($h & 0x0F) << 18 | (ord($c{1}) & 0x3F) << 12 | (ord($c{2}) & 0x3F) << 6 | (ord($c{3}) & 0x3F); 
                 $h = "&#" . $h . ";"; 
                 return $h; 
             } 
         } 
     }// 
     
     //utf-8 environment    
     $content = "<strong>дизайн<br />";
     $oUnicodeReplace = new unicode_replace_entities(); 
     $content = $oUnicodeReplace->UTF8entities($content); 
     echo "<br />Result:<br />"; 
     echo $content; 
     $source = htmlentities($content); 
     echo "<br />htmlentities of resulting data:<br />"; 
     echo $source; 
     echo "<br /><br />Note: Entities get replaced with 'literals' in textarea FF3<br /><br />"; 
     echo "<textarea style='width:300px;height:150px;'>"; 
     echo $content; 
     echo "</textarea>"; 
     
     echo "<br /><br />For editing NCR's rather than 'literals' in a textarea<br /><br />"; 
     echo "<textarea style='width:300px;height:150px;'>"; 
     echo preg_replace("/(&#)+/","&#",$content);  
     echo "</textarea>"; 
 ?>