<meta charset="utf-8" /> 
<form action="character_generator.php"> 
Start: <input type="text" name="start" /><br /> 
End: <input type="text" name="end" /><br /> 
<input type="submit" /> 
</form> 
 
<?php 
 
if ($_REQUEST["start"] == "") { 
    $start = 230; 
} else { 
    $start = $_REQUEST["start"]; 
} 
 
if ($_REQUEST["end"] == "") { 
    $end = 235; 
} else { 
    $end = $_REQUEST["end"]; 
} 
 
$entities_file = "dtd/xhtml1-strict.dtd"; 
//$entities_file = "dtd/many_entities.dtd"; 
 
$entities_code = file_get_contents($entities_file); 
$array_entities = explode("\r\n", $entities_code); 
 
print("entities file: " . $entities_file . "<br>\r\n"); 
 
?> 
 
<table cellpadding="4" cellspacing="0" border="1"> 
<tr> 
<th>Raw</th> 
<th>Entity</th> 
<th>Decimal-encoded</th> 
<th>Hexadecimal-encoded</th> 
<th>Letter-encoded</th> 
<th>URL-encoded</th> 
</tr> 
 
<?php 
 
while($start < $end + 1) { 
    print("<tr>\r\n"); 
    print("<td>"); 
    $raw = html_entity_decode("&#" . $start . ";"); 
    print($raw); 
    print("</td>\r\n"); 
    print("<td>");                 
    print("&#" . $start . ";"); 
    print("</td>\r\n"); 
    print("<td>");                 
    print(htmlentities("&#" . $start . ";")); 
    print("</td>\r\n"); 
    $hex = dechex($start); 
    print("<td>");                 
    print(htmlentities("&#x" . $hex . ";")); 
    print("</td>\r\n"); 
    print("<td>"); 
    // we use something like a .ent lookup for this... 
    foreach($array_entities as $line) { 
        if(preg_match('/<!ENTITY\s*(\w*)\s*"&#' . $start . ';"\s*>/is', $line, $entities_match)) { 
            print(htmlentities("&" . $entities_match[1] . ";")); 
            break; 
        } elseif(preg_match('/<!ENTITY\s*(\w*)\s*"&#x[0]*' . $hex . ';"\s*>/is', $line, $entities_match)) { 
            print(htmlentities("&" . $entities_match[1] . ";")); 
            break; 
        } 
    } 
    print("</td>\r\n"); 
    print("<td>"); 
    if(strlen($raw) === 1) { 
        print(urlencode($raw)); 
    } 
    print("</td>\r\n"); 
    //print("<td>"); 
    //print(ord($raw) . "\r\n"); 
    //print("</td>\r\n"); 
    print("</tr>\r\n"); 
    $start++; 
} 
 
?> 
 
</table>
 
 |