PHP: วิธีแก้ปัญหา strlen() นับตัวอักษรภาษาไทยมั่ว

php[1]สวัสดีครับ ก่อนอื่นต้องขอโทษด้วยครับที่ผมห่างหายจากการอัพเดทเว็บไซต์ไปนานมากๆ วันนี้ได้โอกาสกลับมาอัพเดท เนื่องเพราะเมื่อวันก่อนได้เขียน PHP ที่จำเป็นต้องทำงานเกี่ยวกับตัวอักษรภาษาไทย (UTF-8) ซึ่งผมต้องการที่จะนับตัวอักษรและตัดออกตามจำนวนที่ต้องการครับ

สำหรับตัวปัญหานั้นคือ โดยทั่วไปเวลาที่ผมต้องการนับตัวอักษร (ทั่วไปจะเป็นภาษาอังกฤษ) ผมจะใช้ฟังก์ชั่น strlen() ตัวนี้ครับ แต่เมื่อพอนำมาใช้กับภาษาไทยแล้วเกิดปัญหาการนับมั่วขึ้นทันที (เข้าใจว่าตัวฟังก์ชั่นจะนับพวกสระและวรรณยุกต์ด้วย)

สำหรับวิธีการแก้ปัญหาคือต้องเลี่ยงไปใช้อีกฟังก์ชั่นแทนครับ นั่นก็คือ mb_strlen()?ซึ่งทำงานได้เหมือนกันแต่จะไม่มีปัญหากับภาษาไทยครับ แต่ต้องใส่ค่าเพิ่มเติมเข้าไปตามด้านล่างเลยครับ

เพียงเท่านี้การนับตัวอักษรพยัญชนะภาษาไทยก็สามารถทำได้แบบไม่มีปัญหาแล้วครับ แต่ผมอยากจะแถมให้อีกฟังก์ชั่นครับ จะได้ทำงานกันได้ครบๆ นั่นก็คือ ฟังก์ชั่นที่ใช้ตัดคำภาษาไทยครับ จะได้ไม่มีปัญหาตัดตัวอักษรแล้วเหลือสระไว้ จะทำแสดงผลผิดพลาดครับ นั่นก็คือ mb_substr() นั่นเองครับ ส่วนการใช้งานก็ใช้งานเหมือนกับฟังก์ชั่น substr() เลยครับ

เป็นอย่างไรกันบ้างครับ หวังว่าจะช่วยเพื่อนๆ ที่มีปัญหาการนับคำและตัดคำภาษาไทยเพี้ยนๆ ได้นะครับ สำหรับวันนี้ผมต้องขอตัวไปก่อนนะครับ ไว้โอกาสหน้าจะมาแนะนำเรื่องอะไรกันอีกไว้ติดตามกันนะครับ สวัสดีครับ!

Thapakorn
Follow me

Leave a Reply