<?php

    
// load global translation table
    
global $unicodeToAscii;
    
$unicodeToAscii = include 'charmap.inc.php';

    
// public function
    
function unicode2ascii$utf8text ) {
    
        global 
$unicodeToAscii;
        
        
// init
        
ob_start();
        
        
// convert to 32 bit characters
        
$unicode iconv('UTF-8','UTF32',$utf8text);
        
$length  strlen($unicode);
                
        
// process every 4 bytes (32 bits)
        
for($i=0;$i<$length;$i+=4) {
        
            
// the current 4 byte character (as 4 single-byte characters in a string)
            
$u32 substr($unicode,$i,4);
            
            
// convert 4 characters to single number
            
$u32 = (ord($u32{3}) << 24
                 + (
ord($u32{2}) << 16
                 + (
ord($u32{1}) << )
                 +  
ord($u32{0});
            
            
// produce the new character
            
echo ($u32<0x80
                 ? 
chr($u32)                            // us-ascii part 
                 
: ( (isset($unicodeToAscii[$u32])) 
                     ? 
$unicodeToAscii[$u32]            // defined by map
                     
''                               // undefined 
                   
);
            
        }
        
        
// finish
        
return ob_get_clean();
    
    }

?>