Les dejo el script que realice.
Probado con:
PHP 5.3
PCRE 8.32
Navegadores recientes.
Dependiendo del navegador, muestra algunos caracteres distintos. He visto diferencia en los de Control.
Hay que cambiar los valores del bucle for para ver los caracteres que te interesan.
Funcionando.
Me deje llevar por la emocion.
Espero les sirva.
Saludos
Código PHP:
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</head><body>
<?php
$PropiedadesPCRE=array(
'C','Cc','Cf','Cn','Co','Cs',
'L','Ll','Lm','Lo','Lt','Lu',
'M','Mc','Me','Mn','N','Nd',
'Nl','No','P','Pc','Pd','Pe',
'Pf','Pi','Po','Ps','S','Sc',
'Sk','Sm','So','Z','Zl','Zp',
'Zs');
echo'<table style="border:1px solid black;" >';
echo'<tr>
<td>UNICODE</td>
<td>HTML HEX</td>
<td>HTML DEC</td>';
foreach($PropiedadesPCRE as $propiedad){
echo"<td>$propiedad</td>";
}
echo'</tr>';
for($a=0;$a<=1000;$a++){
$hex=dechex($a);
if(strlen($hex)==1){$unicode='000'.$hex;}
if(strlen($hex)==2){$unicode='00'.$hex;}
if(strlen($hex)==3){$unicode='0'.$hex;}
if(strlen($hex)>=4){$unicode=$hex;}
$caracter=mb_convert_encoding( "&#$a;" , 'UTF-8' , 'HTML-ENTITIES' );
$RESULTS=array();
foreach($PropiedadesPCRE as $propiedad){
$RESULTS[]=preg_match('/\p{'.$propiedad.'}/u',$caracter);
}
echo"<tr><td>U+$unicode</td><td>&#x$unicode;</td><td>&#$a;</td>";
foreach($RESULTS as $result){
echo"<td>$result</td>";
}
echo"</tr>";
}
echo'<table>';
?>
<body></html>