php html decode

Aşağıdaki işlev, adlandırılmış ve sayısal HTML varlıklarının kodunu çözer ve UTF-8 üzerinde çalışır. İconv gerektirir.

function decodeHtmlEnt($str) {
    $ret = html_entity_decode($str, ENT_COMPAT, 'UTF-8');
    $p2 = -1;
    for(;;) {
        $p = strpos($ret, '&#', $p2+1);
        if ($p === FALSE)
            break;
        $p2 = strpos($ret, ';', $p);
        if ($p2 === FALSE)
            break;
           
        if (substr($ret, $p+2, 1) == 'x')
            $char = hexdec(substr($ret, $p+3, $p2-$p-3));
        else
            $char = intval(substr($ret, $p+2, $p2-$p-2));
           
        //echo "$char\n";
        $newchar = iconv(
            'UCS-4', 'UTF-8',
            chr(($char>>24)&0xFF).chr(($char>>16)&0xFF).chr(($char>>8)&0xFF).chr($char&0xFF)
        );
        //echo "$newchar<$p<$p2<<\n";
        $ret = substr_replace($ret, $newchar, $p, 1+$p2-$p);
        $p2 = $p + strlen($newchar);
    }
    return $ret;
}


echo $input = decodeHtmlEnt("G&uuml;n&uuml;m&uuml;zde t&uuml;p bebek tedavisi son derece pop&uuml;ler bir yardımcı &uuml;reme tekniğidir. T&uuml;p bebek tedavisinde doğal gebelikten fark yumurta ve spermin v&uuml;cudun dışında, bir laboratuvar ortamında d&ouml;llenmesidir.");