ขอบคุณมากครับ มันยอดมากเลย
แล้วทีนี้ถ้าจะเช็คจำนวนตัวอักษร จะทำยังไงครับ ถ้าคำที่ใส่เข้ามามีทั้งภาษาไทยและอังกฤษ
ไม่ใช้ strlen ล่ะครับ ??
ถ้าเป็น ภาษาไทย UTF-8 มันนับ 3 อ่ะครับ
แต่ทำได้ละครับ ให้แปลงไปเป็น tis620 ก่อน แล้วถึงหาจำนวนตัวอักษร แล้วค่อยแปลงกลับ
function utf8totis620($string) {
$str = $string;
$res = "";
for ($i = 0; $i < strlen($str); $i++) {
if (ord($str[$i]) == 224) {
$unicode = ord($str[$i+2]) & 0x3F;
$unicode |= (ord($str[$i+1]) & 0x3F) << 6;
$unicode |= (ord($str[$i]) & 0x0F) << 12;
$res .= chr($unicode-0x0E00+0xA0);
$i += 2;
} else {
$res .= $str[$i];
}
}
return $res;
}
function tis2utf8($tis) {
for( $i=0 ; $i< strlen($tis) ; $i++ ){
$s = substr($tis, $i, 1);
$val = ord($s);
if( $val < 0x80 ){
$utf8 .= $s;
} elseif ( ( 0xA1 <= $val and $val <= 0xDA ) or ( 0xDF <= $val and $val <= 0xFB ) ){
$unicode = 0x0E00 + $val - 0xA0;
$utf8 .= chr( 0xE0 | ($unicode >> 12) );
$utf8 .= chr( 0x80 | (($unicode >> 6) & 0x3F) );
$utf8 .= chr( 0x80 | ($unicode & 0x3F) );
}
}
return $utf8;
}
$name = utf8totis620($name);
echo strlen($name);
$name = tis2utf8($name);
ถ้ามีวิธีดีกว่านี้ แนะนำด้วยครับ
ปล. โค้ดแปลงไปมาระหว่าง tis620 กับ utf8 เอามาจากในเน็ต แต่จำไม่ได้เอามาจากเว็บไหน แต่ใช้ได้ผล
ขอบคุงมากเลยง้าบ ผมกำลังอยากได้ แปลงไปแปลงกลับพอดีเลย เจอแต่แปลงไปไม่มีแปลงกลับ