ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน


เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

LogoThai.COM  |  ขายโปรแกรมระบบงานคลินิกทำงานผ่านเวป  |  บันทึกเขียนโปรแกรม  |  ตอบ ( Re: จัดการภาษาไทย (UTF-8) ด้วย Multibyte String Functions )
LOGOthai.com

คลิกที่นี่ -->> เปรียบเทียบทำเลและราคาที่ดินวังน้ำเขียวผ่าน GooleMAP | คลิกที่นี้ -->> Upload ภาพ

ตอบ
คำเตือน: หัวข้อนี้ไม่มีการตอบกระทู้ อย่างน้อย 120 วัน
คุณแน่ใจหรือไม่ ที่จะตอบกระทู้, กรุณาพิจารณาเริ่มหัวข้อใหม่
ชื่อ:
อีเมล์:
หัวข้อ:
ไอค่อนข้อความ:
ตัวหนาตัวเอียงตัวขีดเส้นใต้ตัวมีขีดกลาง|ตัวเรืองแสงตัวมีเงาตัวอักษรวิ่ง|จัดย่อหน้าอิสระจัดย่อหน้าชิดซ้ายจัดย่อหน้ากึ่งกลางจัดย่อหน้าชิดขวา|เส้นขวาง|ขนาดตัวอักษรแบบตัวอักษร
YouTubeInsert flash videoใส่แฟลชใส่รูปใส่ไฮเปอร์ลิ้งค์ใส่อีเมล์ใส่ลิ้งค์ FTP|ใส่ตารางใส่แถวของตารางใส่คอลัมน์ตาราง|ตัวยกตัวห้อยตัวพิมพ์ดีด|ใส่โค้ดใส่การอ้างถึงคำพูด|ใส่ลีสต์
&a034& &a046& &a060& &a036& &a070& Sad &a041& &a019& &a030& &b002& &a022& &a003& &a038& &a018& &a039& &a040& &a035& &a027& &a021& &d038& &d045& &d034& &d017& &d008& &d039& &d046& &d049& &a068& &a065& &b0077& [เพิ่มเติม]
+ ตัวเลือกเพิ่มเติม...
แนบไฟล์: (แนบไฟล์เพิ่ม)
ขนาดไฟล์สูงสุดที่อนุญาต: 10240 KB, ต่อกระทู้: 40

shortcuts: กด alt+s เพื่อตั้งกระทู้ หรือ alt+p แสดงตัวอย่าง



สรุปหัวข้อ
ข้อความเมื่อ: 16 พฤศจิกายน 2557 09:18:18
ข้อความโดย: LesCop
UTF-8 ใช้พื้นที่ 3 ไบต์ ในการเก็บข้อมูลภาษาไทย 1 อักขระ  ดังนั้นจึงไม่สามารถใช้ฟังก์ชัน เช่น strlen() และ substr() กับภาษาไทยที่เป็น UTF-8 ได้ เช่น

$string = "ที่นี่abcd1234";
echo 'strlen() return: '.strlen($string);

ผลลัพธ์ที่ได้คือ
strlen() return: 26

ตัวเลข 26 มาจาก ภาษาไทย 6×3 = 18, ภาษาอังกฤษ 4 และตัวเลข 4 ตัว

ดังนั้นเพื่อให้นับจำนวนตัวอักขระได้อย่างถูกต้องจะต้องใช้ฟังก์ชัน multibyte  string  เช่น จากตัวอย่างข้างต้น จะต้องใช้ฟังก์ชัน mb_strlen() แทน strlen()

$string = "ที่นี่abcd1234";
echo 'mb_strlen() return: '.mb_strlen($string, 'utf-8');
ผลลัพธ์ที่ได้คือ:
strlen() return: 14

จะเห็นว่าได้ผลลัพธ์ตามที่ควรจะเป็นคือ ภาษาไทย 6, ภาษาอังกฤษ 4 และ ตัวเลข 4 ตัว

ในทำนองเดียวกัน เมื่อต้องการตัดประโยคให้สั้นลง เช่น ต้องการเลือกมาเพียง 3 ตัวอักษรแรก  เราจะไม่สามารถใช้ substr() กับภาษาไทยที่ encode ด้วย UTF-8 ได้

$new_string = substr($string, 0, 3);
echo $new_string;
ผลลัพท์ที่ได้คือ:


เพื่อให้ได้ผลลัพธ์ถูกต้องตามที่ต้องการ เราจึงต้องใช้ mb_substr() แทน substr()

$new_string = mb_substr($string, 0, 3,'utf-8');
echo $new_string;
ผลลัพท์ที่ได้คือ:
ที่

จากตัวอย่างข้างต้น จะเห็นว่าจะต้องระบุพารามิเตอร์ตัวที่ 4 คือ encoding เป็น UTF-8 เข้าไปด้วย  เพื่อป้องกันไม่ให้เกิดความผิดพลาดในการใช้งาน เราจึงควรใช้ฟังก์ชัน mb_internal_enconde() กำหนดให้การ encode เป็น UTF-8 ในบรรทัดแรกๆ ของโปรแกรมเลย เช่น

echo mb_internal_encoding();
mb_internal_encoding('utf-8');
echo "<br />";
echo mb_internal_encoding();
ผลลัพธ์ทีได้คือ
ISO-8859-1
UTF-8

นอกจากนี้ เราสามารถใช้ฟังก์ชัน iconv_substr() ในการตัดคำด้วยเช่นกัน

$new_string = iconv_substr($string, 0, 3,'utf-8');
echo $new_string;
ผลลัพท์ที่ได้คือ:
ที่

:: ข้อตกลงร่วมกัน ::
ห้ามโพสต์รูปลามก หรือสิ่งผิดกฏหมายทุกประเภท
ห้ามโพสต์ข้อความที่ทำให้ผู้อื่นเสียหาย ห้ามใช้วาจาไม่สุภาพ หรือด่าทอ ข้อความหรือเนื้อหาที่เกิดขึ้น ผู้โพสต์ต้องเป็นคนรับผิดชอบเท่านั้น หากเราตรวจสอบว่ามีการโพสต์รูปลามก หรือทำสิ่งผิดกฎหมาย
เราจะลบโพสต์ทันทีโดยไม่ต้องแจ้งให้ทราบล่วงหน้า




คลิกที่นี่ -->> จัดพระของขวัญเข้ารุ่นและพิมพ์

Powered by SMF | SMF © 2011, Simple Machines | Sitemap | Cityscape design by Bloc | XHTML | CSS
หน้านี้ถูกสร้างขึ้นภายในเวลา 0.102 วินาที กับ 18 คำสั่ง