Menu

Saturday, October 28, 2017

[PHP] การใช้ preg_match สำหรับ validate Emoticon
[PHP] How to Use preg_match for Emoticon Validation

เนื่องจาก Emoticon แต่ละตัวจะมี unicode เฉพาะตัว ซึ่งสามารถดูได้จาก The Unicode Standard 10.0

แต่การ validate โดยใช้ preg_match ของ PHP จำเป็นจะต้องใช้ code ที่เป็น UTF-8 ซึ่งเราสามารถตรวจสอบได้จากเว็บ Unicode character inspector

สมมติว่า เราต้องการ validate Emoticon ตามข้างล่าง

😋 😐

เมื่อตรวจสอบ Unicode และ UTF-8 ของ Emoticon ข้างต้นจะได้ข้อมูลดังนี้
Unicode: 1F60B และ 1F610 ตามลำดับ
UTF-8: F0 9F 98 8B และ F0 9F 98 90 ตามลำดับ

เราจะใช้ค่าของ UTF-8 ในการเขียน RegEx สำหรับการ validate ดังนี้
UTF-8: F0 9F 98 8B
จะได้ RegEx: \x{F0}\x{9F}\x{98}\x{8B}

และ

UTF-8: F0 9F 98 90
จะได้ RegEx: \x{F0}\x{9F}\x{98}\x{90}

ตัวอย่างโค้ดของการ validate Emoticon ข้างต้นจะเป็นดังนี้
<?php

$value = '😋 😐';
echo preg_match('/^\x{F0}\x{9F}\x{98}\x{8B} \x{F0}\x{9F}\x{98}\x{90}$/', $value);

สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับ Unicode Regular Expressions อ่านได้ที่ http://www.regular-expressions.info/unicode.html