[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");


การดึงข้อมูลออกจากฐานข้อมูล MySQL แบบสุ่ม

การดึงข้อมูลออกจากฐานข้อมูล MySQL แบบสุ่ม

ในบางครั้งบางคราวเราอาจจะมีความจำเป็นต้องสุ่ม ข้อมูล ออกจากฐานข้อมูล เช่น การออกข้อสอบ หรือการทำเกมส์ คล้ายเกมส์เศรษฐี เป็นต้น มือใหม่อาจจะมองว่า ทำไงอ่ะ !

แต่อันที่จริงแล้ว ใน MySQL มีคำสั่งอยู่คำสั่งหนึ่ง คือ RAND() ใช้สำหรับสุ่มข้อมูล

ดูคำสั่งนี้นะ

SELECT * FROM table_name ORDER BY RAND()

ข้อมูลที่ถูกเลือกมาจากตาราง tbl_game จะถูกจัดเรียงแบบสุ่ม เพราะฉะนั้นเมื่อเราเอาข้อมูล ขึ้นแสดงบนเว็บเพจ มันก็จะแสดงแบบสุ่มๆ ( คือ เมื่อมีการ load หน้านั้นใหม่ ก็จะแสดงผลออกมาไม่เหมือนกัน)

เห็นมั้ย คำสั่งนี้สามารถนำไปประยุกต์ได้หลายอย่างเลยทีเดียว

ref: www.select2web.com