ตัดข้อความภาษาไทยใน php ไม่ให้มีเครื่องหมายสี่เหลี่ยม
ตัดข้อความภาษาไทยใน php ไม่ให้มีเครื่องหมายสี่เหลี่ยม
ในภาษา PHP จะมีคำสั่งอยู่คำสั่งหนึ่งคือ substr ไว้สำหรับตัดข้อความ ในกรณีที่เราไม่ต้องการให้แสดงข้อความเต็มทั้งหมด มักจะนำไปใช้สำหรับการจำกัดจำนวนตัวอักษรของหัวข้อกระทู้แบบย่อ เนื้อหาแบบย่อ เป็นต้น
ตัวอย่างเช่น ในหน้าแสดงรายการกระทู้ หัวข้อที่ถูกสร้างอาจจะมีความยาวเกินไปเวลาที่แสดงบนเว็บไซต์ทำให้รูแบบการแสดงผลไม่เป็นไปตามดีไซน์ ไม่สวยงาม คำสั่ง substr จะสามารถกำหนดจำนวนตัวอักษรให้เหมาะสมกับรูปแบบที่กำหนดไว้
ใช้คำสั่ง iconv_substr แทนคำสั่ง substr
สำหรับการตัดคำภาษาไทยในภาษา PHP เราจำเป็นจะต้องใช้คำสั่ง iconv_substr แทนคำสั่ง substr เนื่องจากจะมีความแม่นยำของการจำนวนอักขระ ไม่มีอักขระพิเศษเกินมา เหตุผลเพราะคำสั่ง iconv_substr สามารถกำหนด charset ในการนับอักขระให้เป็นแบบ UTF-8 ซึ่งรองรับภาษาไทยอยู่แล้วได้ ตัวอย่างการทำงานของทั้ง 2 คำสั่งสำหรับภาษาไทย
- คำสั่ง substr เมื่อทำงานกับภาษาไทย
$content = "พีเอชพีกับวิธีตัดข้อความภาษาไทยแบบไม่ให้มีเครื่องหมายสีเหลี่ยม"; $new_content = substr($content,0,50); echo $new_content;
ผลลัพธ์ที่ได้เมื่อใช้คำสั่ง substr
พีเอชพีกับวิธีตั��
จะเห็นว่ามีข้อผิดพลาดสำหรับการนับอักขระภาษาไทย ในโค๊ดตัวอย่างเราต้องการให้ตัดเนื้อหาภาษาไทยตั้งแต่อักขระตัวแรกไปจนถึงอักขระตัวที่ 50 แต่ผลลัพธ์ที่ได้คือนับมาแค่ 16 ตัวอักษร และมีอักขระพิเศษเกินมา
- คำสั่ง iconv_substr เมื่อทำงานกับภาษาไทย
$content = "พีเอชพีกับวิธีตัดข้อความภาษาไทยแบบไม่ให้มีเครื่องหมายสีเหลี่ยม"; $new_content = iconv_substr($content,0,50,'UTF-8'); echo $new_content;
ผลลัพธ์ที่ได้เมื่อใช้คำสั่ง iconv_substr
พีเอชพีกับวิธีตัดข้อความภาษาไทยแบบไม่ให้มีเครื่องห
จะเห็นว่าคำสั่ง iconv_substr สามารถทำงานได้อย่างถูกต้อง