ใช้ตัดข้อความจากฐานข้อมูลที่ต้องการแสดงบางส่วนเช่น 30 ตัวอักษร กรณีบางครั้งภาษาไทยที่ตัดจากฐานข้อมูล จะแสดงเป็นรูปสี่เหลี่ยม ใช้ฟังก์ชันนี่แทน substr ใน php แก้ปัญหาที่เกิดได้
แบบที่ 1
1 2 3 4 5 6 7 8 9 10 11 12 | <?php function substr_utf8( $str , $start_p , $len_p ){ return preg_replace( '#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,' . $start_p . '}' . '((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,' . $len_p . '}).*#s' , '$1' , $str ); }; // การใช้งาน // $start_p คือตำแหน่งเริ่มต้นตัดข้อความ // $len_p คือจำนวนตัวอักษรที่ต้องการแสดง // $data="ข้อความทดสอบ ข้อความทดสอบ ข้อความทดสอบ ข้อความทดสอบข้อความทดสอบ "; // echo substr_utf8($data,0,30); ?> |
แบบที่ 2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <?php function utf8_substr( $str , $start_p , $len_p ) { preg_match_all( "/./u" , $str , $ar ); if (func_num_args() >= 3) { $end = func_get_arg(2); return join( "" , array_slice ( $ar [0], $start_p , $len_p )); } else { return join( "" , array_slice ( $ar [0], $start_p )); } } // การใช้งาน // $start_p คือตำแหน่งเริ่มต้นตัดข้อความ // $len_p คือจำนวนตัวอักษรที่ต้องการแสดง // $data="ข้อความทดสอบ ข้อความทดสอบ ข้อความทดสอบ ข้อความทดสอบข้อความทดสอบ "; // echo utf8_substr($data,0,30); ?> |