<?php
if(isset($_GET['show_source'])) {
    
show_source(__FILE__);
    die();
}

// taken from www.php.net/manual/en/function.mb-encode-numericentity.php on May 14th 2009
// thanks to dan at boxuk dot com

function utf2html ($utf2html_string)
{
    
$f 0xffff;
    
$convmap = array(
/* <!ENTITY % HTMLlat1 PUBLIC "-//W3C//ENTITIES Latin 1//EN//HTML">
    %HTMLlat1; */
     
160,  2550$f,
/* <!ENTITY % HTMLsymbol PUBLIC "-//W3C//ENTITIES Symbols//EN//HTML">
    %HTMLsymbol; */
     
402,  4020$f,  913,  9290$f,  931,  9370$f,
     
945,  9690$f,  977,  9780$f,  982,  9820$f,
    
822682260$f823082300$f824282430$f,
    
825482540$f826082600$f846584650$f,
    
847284720$f847684760$f848284820$f,
    
850185010$f859285960$f862986290$f,
    
865686600$f870487040$f870687070$f,
    
870987090$f871187130$f871587150$f,
    
871987190$f872187220$f872787270$f,
    
873087300$f873387340$f873687360$f,
    
874387470$f875687560$f876487640$f,
    
877387730$f877687760$f880088010$f,
    
880488050$f883488360$f883888390$f,
    
885388530$f885588550$f886988690$f,
    
890189010$f896889710$f900190020$f,
    
967496740$f982498240$f982798270$f,
    
982998300$f,
/* <!ENTITY % HTMLspecial PUBLIC "-//W3C//ENTITIES Special//EN//HTML">
   %HTMLspecial; */
/* These ones are excluded to enable HTML: 34, 38, 60, 62 */
     
338,  3390$f,  352,  3530$f,  376,  3760$f,
     
710,  7100$f,  732,  7320$f819481950$f,
    
820182010$f820482070$f821182120$f,
    
821682180$f821882180$f822082220$f,
    
822482250$f824082400$f824982500$f,
    
836483640$f);

    return 
mb_encode_numericentity($utf2html_string$convmap"UTF-8");
}