GORAGOD.com

การแปลงตัวอักษรภาษาไทยเป็นตัวอักษรของ HTML

การแปลงตัวอักษรภาษาไทย(หรืออื่นๆ) ให้เป็นตัวอักษรของ HTML ที่สามารถแสดงบนเว็บไซต์ได้ เช่น
  • ก แปลงเป็น ก
  • ข แปลงเป็น ข
  • < แปลงเป็น &lt;
เป็นต้น
function utf8tohtml($utf8, $encodeTags) {
    $result = '';
    for ($i = 0; $i < strlen($utf8); $i++) {
        $char = $utf8[$i];
        $ascii = ord($char);
        if ($ascii < 128) {
            // one-byte character
            $result .= ($encodeTags) ? htmlentities($char) : $char;
        } else if ($ascii < 192) {
            // non-utf8 character or not a start byte
        } else if ($ascii < 224) {
            // two-byte character
            $result .= htmlentities(substr($utf8, $i, 2), ENT_QUOTES, 'UTF-8');
            $i++;
        } else if ($ascii < 240) {
            // three-byte character
            $ascii1 = ord($utf8[$i+1]);
            $ascii2 = ord($utf8[$i+2]);
            $unicode = (15 & $ascii) * 4096 +
                       (63 & $ascii1) * 64 +
                       (63 & $ascii2);
            $result .= "&#$unicode;";
            $i += 2;
        } else if ($ascii < 248) {
            // four-byte character
            $ascii1 = ord($utf8[$i+1]);
            $ascii2 = ord($utf8[$i+2]);
            $ascii3 = ord($utf8[$i+3]);
            $unicode = (15 & $ascii) * 262144 +
                       (63 & $ascii1) * 4096 +
                       (63 & $ascii2) * 64 +
                       (63 & $ascii3);
            $result .= "&#$unicode;";
            $i += 3;
        }
    }
    return $result;
}

echo utf8tohtml('กขคง', true); // &#3585;&#3586;&#3588;&#3591;
echo utf8tohtml('<font>', true); // &lt;font&gt;
echo utf8tohtml('<font>', false); // <font>