- chr: documentation ( source)
- preg_replace_callback: documentation ( source)
- create_function: documentation ( source)
<?php
echo preg_replace_callback("#%u([0-9A-F]{1,4})#i", create_function('$matches', 'return dec_to_utf8(hexdec($matches[1]));'), '%u01C4');
function dec_to_utf8($src)
{
$dest = '';
if($src < 0)
{
return false;
}
elseif($src <= 0x007f)
{
$dest .= chr($src);
}
elseif($src <= 0x07ff)
{
$dest .= chr(0xc0 | ($src >> 6));
$dest .= chr(0x80 | ($src & 0x003f));
}
elseif($src <= 0xffff)
{
$dest .= chr(0xe0 | ($src >> 12));
$dest .= chr(0x80 | (($src >> 6) & 0x003f));
$dest .= chr(0x80 | ($src & 0x003f));
}
elseif($src <= 0x10ffff)
{
$dest .= chr(0xf0 | ($src >> 18));
$dest .= chr(0x80 | (($src >> 12) & 0x3f));
$dest .= chr(0x80 | (($src >> 6) & 0x3f));
$dest .= chr(0x80 | ($src & 0x3f));
}
else
{
// Out of range
return false;
}
return $dest;
}