GORAGOD.com

การตัดข้อความตามความยาวที่กำหนด สำหรับ UTF-8

การตัดข้อความตามความยาวที่กำหนดบน PHP ปกติแล้วเราใช้ฟังก์ชั่น substr ของ PHP ครับ แต่ฟังก์ชั่นนี้มันทำงานกับ Ansi เท่านั้น ไม่สามารถทำงานกับ UTF-8 ได้ ถ้านำมาใช้กับ UTF-8 ภาษาอังกฤษจะถูกต้องดี แต่ถ้าเป็นภาษาไทยแล้วอาจเหลือตัวสี่เหลี่ยมแถมกลับมาได้

ให้ใช้ฟังกชั่น  substr_utf8 แทนครับ

function substr_utf8( $str, $from , $len )
{
 return preg_replace( '#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$from.'}'.
  '((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$len.'}).*#s',
  '$1' , $str );
};

ฟังก์ชั่นนี้มีรูปแบบและวิธีการใช้เหมือนกับ substr ทุกประการครับ