[PHP] วิธีแก้ปัญหา การตัดข้อความด้วย substr แล้วเป็น สี่เหลี่ยม


วิธีแก้ปัญหา การตัดข้อความด้วย substr แล้วเป็น สี่เหลี่ยม


ปกติ ถ้าเข้าใช้ ภาษาไทยปกติก็จะไม่เจอปัญหานี้ แต่ถ้าเป็นเว็บ หรือ ฐานข้อมูลที่ใช้ UTF-8
เวลาตัดข้อความด้วย substr ก็จะเจอปัญหา ตัวสุดท้ายกลายเป็นสี่เหลี่ยม ทางแก้คือต้องใช้ function ที่ทำงานกับข้อความ ที่เป็น multi-byte

จากปกติที่เราใช้คำสั่ง substr เพื่อตัดข้อความที่มีขนาดยาว แล้วอาจจะให้เป็น ... ตามหลัง แต่ในบ้างครั้ง ก็อาจจะเจอเครื่องหมายแปลก ๆ ติดมาด้วย ดังนั้น ขอเสนอทางแก้อีกทางนึง คือ


$text="Data Transfer หรือ Bandwidth คือ ข้อมูลที่วิ่งเข้าและออกระหว่างเครื่อง Server และผู้ที่เข้ามาติดต่อใช้งานเว็บไซต์ ไม่ว่าจะเป็นผ่านทาง HTTP,FTP หรือ ทาง E-mail ก็ตาม ซึ่งโดยทั่วไป โฮสติ้งแต่ละที่ ก็ได้กำหนดปริมาณการเข้าออกข้อมูลไว้ในหน่วยเป็น Byte และมีการจำกัดปริมาณไว้ต่อเดือนตามอัตราที่เหมาะสมของแต่ละขนาดของแพลน Web Hosting ซึ่ง Data Transfer หรือ Bandwidth เหล่านี้จะถูกแบ่งให้แต่ละเว็บไซต์ในเครื่อง Server เดียวกัน ตามที่ผู้ให้บริการเว็บโฮสติ้งกำหนดไว้";
echo mb_substr($text,0,124,'UTF-8'); //หรือ
echo iconv_substr($text, 0,124, "UTF-8");


ไม่มีความคิดเห็น:

แสดงความคิดเห็น