การหาความยาวของข้อความบน UTF-8

ความยาวของข้อความก็เป็นอีกปัญหาหนึ่งของ UTF-8 ที่ไม่สามารถใช้ strlen ในการอ่านความยาวที่ถูกต้องได้ เนื่องจาก UTF-8 มีการเก็บตัวอักษรที่กว้างกว่า Ansi ทำให้การหาความยาวโดยเฉพาะภาษาไทยผิดพลาด

ให้ใช้ strlen_utf8 แทนครับ

function strlen_utf8( $str )
{
 $i = 0;
 $count = 0;
 $len = strlen( $str );
 while ( $i < $len )
 {
  $chr = ord( $str[$i] );
  $count++;
  $i++;
  if ( $i >= $len )
  {
   break;
  };
  if ( $chr & 0x80 )
  {
   $chr <<= 1;
   while ( $chr & 0x80 )
   {
    $i++;
    $chr <<= 1;
   };
  };
 };
 return $count;
};

ฟังก์ชั่นนี้มีการใช้งานเหมือนกับ strlen ทุกประการครับ
ผู้เขียน goragod โพสต์เมื่อ 18 พ.ย. 2551 เปิดดู 6,987 ป้ายกำกับ PHPUTF-8
^