{"id":14874,"date":"2021-09-17T08:49:15","date_gmt":"2021-09-17T08:49:15","guid":{"rendered":"https:\/\/freehost.page\/?p=14874"},"modified":"2021-09-17T08:49:15","modified_gmt":"2021-09-17T08:49:15","slug":"php-thao-tac-chuoi-tieng-viet-v12","status":"publish","type":"post","link":"https:\/\/kiencang.net\/php-thao-tac-chuoi-tieng-viet-v12\/","title":{"rendered":"C\u00e1c h\u00e0m PHP \u0111\u1ec3 thao t\u00e1c v\u1edbi chu\u1ed7i ti\u1ebfng Vi\u1ec7t (v1.2)"},"content":{"rendered":"\n
Ph\u1ea7n n\u00e0y t\u00f4i s\u1ebd x\u00e2y d\u1ef1ng c\u00e1c h\u00e0m \u0111\u1ec3 thao t\u00e1c s\u00e2u h\u01a1n v\u1edbi chu\u1ed7i ti\u1ebfng Vi\u1ec7t n\u00f3i chung, v\u00e0 h\u1ecd t\u00ean ng\u01b0\u1eddi Vi\u1ec7t n\u00f3i ri\u00eang. C\u00e1i n\u00e0y s\u1ebd s\u1eed d\u1ee5ng c\u00e1c function \u0111\u1ed9c l\u1eadp tr\u01b0\u1edbc \u0111\u00f3 l\u00e0:<\/p>\n\n\n\n
M\u00e3 \u0111\u1ea7y \u0111\u1ee7 (ph\u1ea7n gi\u1ea3i th\u00edch cho t\u1eebng h\u00e0m c\u00f3 d\u01b0\u1edbi m\u00e3 \u0111\u1ea7y \u0111\u1ee7):<\/p>\n\n\n\n
<?php \n\/* \n * PHP functions to process Vietnamese strings v1.2\n * MIT License\n * Nguyen Duc Anh - freehost.page\n *\/\n\n\n\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\n\n\nfunction vn_rmv_wsp($str) { \/\/ b\u1ecf kho\u1ea3ng tr\u1eafng d\u01b0 th\u1eeba\n $str2 = trim($str, ' '); \/\/ b\u1ecf kho\u1ea3ng tr\u1eafng tr\u01b0\u1edbc v\u00e0 sau chu\u1ed7i\n $rs = preg_replace('\/\\s+\/', ' ', $str2); \/\/ lo\u1ea1i b\u1ecf kho\u1ea3ng tr\u1eafng th\u1eeba trong chu\u1ed7i\n\nreturn $rs;\n}\n\n\n\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\n\n\nfunction vn_low_rmv($str) { \/\/ lo\u1ea1i b\u1ecf kho\u1ea3ng tr\u1eafng, chuy\u1ec3n sang k\u00fd t\u1ef1 th\u01b0\u1eddng \n $str2 = vn_rmv_wsp($str); \/\/ b\u1ecf kho\u1ea3ng tr\u1eafng tr\u01b0\u1edbc v\u00e0 sau chu\u1ed7i\n $rs = mb_strtolower($str2,'UTF-8'); \/\/ chuy\u1ec3n th\u00e0nh k\u00fd t\u1ef1 th\u01b0\u1eddng\n \nreturn $rs;\n}\n\n\n\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\n\n\n\/\/ \u00e1p d\u1ee5ng \u0111\u01b0\u1ee3c cho m\u1ed9t t\u1eeb ho\u1eb7c chu\u1ed7i nhi\u1ec1u t\u1eeb\nfunction vn_num_char($str) { \/\/ s\u1ed1 l\u01b0\u1ee3ng k\u00fd t\u1ef1 c\u1ee7a chu\u1ed7i, m\u1ed9t t\u1eeb hay chu\u1ed7i nhi\u1ec1u t\u1eeb \u0111\u1ec1u \u0111\u01b0\u1ee3c\n $str2 = pop_hex_convert($str); \/\/ chuy\u1ec3n v\u1ec1 d\u1ea1ng m\u00e3 h\u00f3a hex ti\u00eau chu\u1ea9n\n $rs = mb_strlen($str2, 'UTF-8');\n\nreturn $rs;\n} \n\n\n\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\n\n\n\/\/ \u00e1p d\u1ee5ng \u0111\u01b0\u1ee3c cho m\u1ed9t t\u1eeb ho\u1eb7c chu\u1ed7i nhi\u1ec1u t\u1eeb\nfunction vn_remove_accents($str){ \/\/ x\u00f3a d\u1ea5u c\u1ee7a m\u1ed9t k\u00fd t\u1ef1 ho\u1eb7c m\u1ed9t t\u1eeb, ho\u1eb7c chu\u1ed7i\n $timbre = vna_hex_timbre(); \/\/ m\u00e3 h\u00f3a hex c\u1ee7a d\u1ea5u ti\u1ebfng Vi\u1ec7t\n $hex = bin2hex(rarely_hex_convert($str)); \/\/ chuy\u1ec3n sang m\u00e3 hex \u0111\u1ec3 t\u00ecm d\u1ea5u\n \n foreach ($timbre as $tim) { \/\/ t\u00e1ch th\u00e0nh c\u00e1c d\u1ea5u\n $pt='\/'.$tim.'\/'; \/\/ t\u1ea1o m\u1eabu\n if (preg_match($pt, $hex)) { \/\/so kh\u1edbp\n $hex = preg_replace($pt,'',$hex); \/\/ kh\u1eed d\u1ea5u c\u1ee7a $hex; n\u00f3 v\u1eabn \u0111ang \u1edf d\u1ea1ng hex\n } \n }\n \n $rs = pop_hex_convert(hex2bin($hex)); \/\/ chuy\u1ec3n v\u1ec1 t\u1eeb m\u00e3 h\u00f3a ph\u1ed5 th\u00f4ng\n if ($rs == \"\") {$rs = $str;} \/\/ d\u1ef1 ph\u00f2ng\n \nreturn $rs;\n}\n\n\n\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\n\n\n\/\/ \u00e1p d\u1ee5ng \u0111\u01b0\u1ee3c cho m\u1ed9t t\u1eeb ho\u1eb7c chu\u1ed7i nhi\u1ec1u t\u1eeb\n\/\/ \u0111\u01b0\u1ee3c thi\u1ebft k\u1ebf h\u01b0\u1edbng \u0111\u1ebfn m\u1ed9t t\u1eeb\nfunction vn_num_acc_char($str) { \/\/ t\u00ecm s\u1ed1 l\u01b0\u1ee3ng k\u00fd t\u1ef1 c\u00f3 d\u1ea5u trong m\u1ed9t t\u1eeb\n $rs = 0; \/\/ rs c\u00f3 th\u1ec3 l\u1edbn h\u01a1n 1, nh\u1eefng t\u1eeb \u0111\u01a1n c\u00f3 h\u01a1n m\u1ed9t d\u1ea5u s\u1ebd \u0111\u01b0\u1ee3c xem l\u00e0 l\u1ed7i ch\u00ednh t\u1ea3\n $acc = vna_acc_char_array(); \/\/ l\u1ea5y m\u1ea3ng c\u00e1c nguy\u00ean \u00e2m \u0111\u01a1n c\u00f3 d\u1ea5u\n $strx = pop_hex_convert($str); \/\/ chuy\u1ec3n v\u1ec1 d\u1ea1ng m\u00e3 h\u00f3a ph\u1ed5 bi\u1ebfn, v\u00e0 chuy\u1ec3n v\u1ec1 k\u00fd t\u1ef1 th\u01b0\u1eddng\n foreach ($acc as $acc_char) {\n $pt='\/'.$acc_char.'\/'; \n if (preg_match_all($pt, $strx)) {$rs += preg_match_all($pt, $strx);}\n }\n \nreturn $rs; \n}\n\n\n\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\n\n\n\/\/ \u00e1p d\u1ee5ng \u0111\u01b0\u1ee3c cho m\u1ed9t t\u1eeb ho\u1eb7c chu\u1ed7i nhi\u1ec1u t\u1eeb\n\/\/ \u0111\u01b0\u1ee3c thi\u1ebft k\u1ebf h\u01b0\u1edbng \u0111\u1ebfn m\u1ed9t t\u1eeb\nfunction vn_num_none_acc_vowel($str) { \/\/ t\u00ecm s\u1ed1 l\u01b0\u1ee3ng c\u00e1c nguy\u00ean \u00e2m \u0111\u01a1n kh\u00f4ng d\u1ea5u trong m\u1ed9t t\u1eeb\n $rs = 0;\n $none_acc_vowel = vna_vowel_lett(); \/\/ c\u00e1c nguy\u00ean \u00e2m \u0111\u01a1n kh\u00f4ng d\u1ea5u m\u00e3 h\u00f3a ph\u1ed5 th\u00f4ng\n $strx = pop_hex_convert($str); \/\/ chuy\u1ec3n v\u1ec1 d\u1ea1ng m\u00e3 h\u00f3a ph\u1ed5 bi\u1ebfn, v\u00e0 chuy\u1ec3n v\u1ec1 k\u00fd t\u1ef1 th\u01b0\u1eddng\n foreach ($none_acc_vowel as $nav) {\n $pt = '\/'.$nav.'\/';\n if (preg_match_all($pt, $strx)) {$rs += preg_match_all($pt, $strx);}\n }\n \nreturn $rs; \/\/ tr\u1ea3 v\u1ec1 s\u1ed1 l\u01b0\u1ee3ng c\u00e1c nguy\u00ean \u00e2m \u0111\u01a1n kh\u00f4ng d\u1ea5u \n}\n\n\n\n\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\n\n\n\/\/ \u00e1p d\u1ee5ng \u0111\u01b0\u1ee3c v\u1edbi m\u1ed9t t\u1eeb, c\u0169ng nh\u01b0 m\u1ed9t chu\u1ed7i nhi\u1ec1u t\u1eeb\nfunction vn_foreign_check_low($str) { \/\/ tr\u1ea3 v\u1ec1 1 n\u1ebfu c\u00f3 k\u00fd t\u1ef1 n\u01b0\u1edbc ngo\u00e0i, tr\u1ea3 v\u1ec1 0 n\u1ebfu kh\u00f4ng c\u00f3\n $rs=0;\n $fr = array(\"f\",\"j\",\"w\",\"z\"); \/\/ t\u00ecm c\u00e1c k\u00fd t\u1ef1 n\u01b0\u1edbc ngo\u00e0i, b\u00ecnh th\u01b0\u1eddng kh\u00f4ng c\u00f3 trong ti\u1ebfng Vi\u1ec7t\n $hex = pop_hex_convert($str); \/\/ chuy\u1ec3n v\u1ec1 d\u1ea1ng vi\u1ebft th\u01b0\u1eddng, m\u00e3 h\u00f3a ph\u1ed5 bi\u1ebfn\n foreach ($fr as $fr2) {\n $pt = '\/'.$fr2.'\/';\n $r = preg_match($pt, $hex);\n if ($r > 0) {$rs=1; break;} \/\/ ch\u1ec9 c\u1ea7n c\u00f3 m\u1ed9t k\u00fd t\u1ef1 n\u01b0\u1edbc ngo\u00e0i l\u00e0 \u0111\u1ee7 \u0111\u1ec3 t\u00ean kh\u00f4ng ph\u1ea3i l\u00e0 d\u1ea1ng thu\u1ea7n Vi\u1ec7t \n }\n \nreturn $rs; \n}\n\n\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ End code<\/code><\/pre>\n\n\n\n
\n\n\n\n1. Lo\u1ea1i b\u1ecf kho\u1ea3ng tr\u1eafng d\u01b0 th\u1eeba tr\u01b0\u1edbc, sau m\u1ed9t t\u1eeb<\/strong><\/p>\n\n\n\nfunction vn_rmv_wsp($str) { \/\/ b\u1ecf kho\u1ea3ng tr\u1eafng d\u01b0 th\u1eeba\n $str2 = trim($str, ' '); \/\/ b\u1ecf kho\u1ea3ng tr\u1eafng tr\u01b0\u1edbc v\u00e0 sau chu\u1ed7i\n $rs = preg_replace('\/\\s+\/', ' ', $str2); \/\/ lo\u1ea1i b\u1ecf kho\u1ea3ng tr\u1eafng th\u1eeba trong chu\u1ed7i\n\nreturn $rs;\n}<\/code><\/pre>\n\n\n\nHai h\u00e0m c\u01a1 b\u1ea3n \u0111\u01b0\u1ee3c d\u00f9ng l\u00e0:<\/p>\n\n\n\n
trim<\/code> d\u00f9ng \u0111\u1ec3 lo\u1ea1i b\u1ecf kho\u1ea3ng tr\u1eafng tr\u01b0\u1edbc v\u00e0 sau chu\u1ed7i;<\/li>preg_replace<\/code> \u0111\u1ec3 t\u00ecm 2 kho\u1ea3ng tr\u1eafng tr\u1edf l\u00ean v\u00e0 thay th\u1ebf n\u00f3 b\u1eb1ng m\u1ed9t kho\u1ea3ng tr\u1eafng ti\u00eau chu\u1ea9n;<\/li><\/ul>\n\n\n\nVi\u1ec7c lo\u1ea1i b\u1ecf kho\u1ea3ng tr\u1eafng d\u01b0 th\u1eeba gi\u00fap vi\u1ec7c t\u00e1ch t\u1eeb, \u0111\u1ebfm s\u1ed1 l\u01b0\u1ee3ng k\u00fd t\u1ef1 \u0111\u01b0\u1ee3c ch\u00ednh x\u00e1c.<\/p>\n\n\n\n
V\u00ed d\u1ee5:<\/p>\n\n\n\n
$str = \" Nguy\u1ec5n \u0110\u1ee9c Anh\";\necho vn_rmv_wsp($str);\n\n\/\/ k\u1ebft qu\u1ea3: Nguy\u1ec5n \u0110\u1ee9c Anh<\/code><\/pre>\n\n\n\n
\n\n\n\n2. Lo\u1ea1i b\u1ecf kho\u1ea3ng tr\u1eafng v\u00e0 chuy\u1ec3n chu\u1ed7i v\u1ec1 k\u00fd t\u1ef1 th\u01b0\u1eddng<\/strong><\/p>\n\n\n\nfunction vn_low_rmv($str) { \/\/ lo\u1ea1i b\u1ecf kho\u1ea3ng tr\u1eafng, chuy\u1ec3n sang k\u00fd t\u1ef1 th\u01b0\u1eddng \n $str2 = vn_rmv_wsp($str); \/\/ b\u1ecf kho\u1ea3ng tr\u1eafng tr\u01b0\u1edbc v\u00e0 sau chu\u1ed7i\n $rs = mb_strtolower($str2,'UTF-8'); \/\/ chuy\u1ec3n th\u00e0nh k\u00fd t\u1ef1 th\u01b0\u1eddng\n \nreturn $rs;\n}<\/code><\/pre>\n\n\n\n- Tr\u01b0\u1edbc ti\u00ean lo\u1ea1i b\u1ecf kho\u1ea3ng tr\u1eafng d\u01b0 th\u1eeba;<\/li>
- Sau \u0111\u00f3 d\u00f9ng h\u00e0m c\u00f3 s\u1eb5n c\u1ee7a PHP l\u00e0 mb_strtolower \u0111\u1ec3 chuy\u1ec3n n\u00f3 th\u00e0nh k\u00fd t\u1ef1 th\u01b0\u1eddng;<\/li><\/ul>\n\n\n\n
H\u1ecd t\u00ean chu\u1ea9n s\u1ebd vi\u1ebft hoa \u0111\u1ea7u t\u1eeb, nh\u01b0ng \u0111\u1ec3 ti\u1ec7n thao t\u00e1c v\u1edbi chu\u1ed7i, ch\u00fang ta s\u1ebd chuy\u1ec3n n\u00f3 v\u1ec1 d\u1ea1ng vi\u1ebft th\u01b0\u1eddng.<\/p>\n\n\n\n
V\u00ed d\u1ee5:<\/p>\n\n\n\n
$str = \" Nguy\u1ec5n \u0110\u1ee9c Anh\";\necho vn_low_rmv($str);\n\n\/\/ k\u1ebft qu\u1ea3: nguy\u1ec5n \u0111\u1ee9c anh<\/code><\/pre>\n\n\n\n
\n\n\n\n3. \u0110\u1ebfm s\u1ed1 l\u01b0\u1ee3ng k\u00fd t\u1ef1 c\u1ee7a m\u1ed9t t\u1eeb<\/strong><\/p>\n\n\n\n\u00c1p d\u1ee5ng \u0111\u01b0\u1ee3c cho m\u1ed9t t\u1eeb ho\u1eb7c chu\u1ed7i nhi\u1ec1u t\u1eeb. Trong tr\u01b0\u1eddng h\u1ee3p chu\u1ed7i nhi\u1ec1u t\u1eeb th\u00ec n\u00f3 t\u00ednh c\u1ea3 kho\u1ea3ng tr\u1ed1ng trong chu\u1ed7i gi\u1eefa c\u00e1c t\u1eeb.<\/p>\n\n\n\n
\/\/ \u00e1p d\u1ee5ng \u0111\u01b0\u1ee3c cho m\u1ed9t t\u1eeb ho\u1eb7c chu\u1ed7i nhi\u1ec1u t\u1eeb\nfunction vn_num_char($str) { \/\/ s\u1ed1 l\u01b0\u1ee3ng k\u00fd t\u1ef1 c\u1ee7a chu\u1ed7i, m\u1ed9t t\u1eeb hay chu\u1ed7i nhi\u1ec1u t\u1eeb \u0111\u1ec1u \u0111\u01b0\u1ee3c\n $str2 = pop_hex_convert($str); \/\/ chuy\u1ec3n v\u1ec1 d\u1ea1ng m\u00e3 h\u00f3a hex ti\u00eau chu\u1ea9n\n $rs = mb_strlen($str2, 'UTF-8');\n\nreturn $rs;\n}<\/code><\/pre>\n\n\n\n
\n\n\n\n4. X\u00f3a d\u1ea5u c\u1ee7a m\u1ed9t k\u00fd t\u1ef1 ho\u1eb7c m\u1ed9t t\u1eeb<\/strong><\/p>\n\n\n\nC\u00f3 th\u1ec3 \u00e1p d\u1ee5ng \u0111\u01b0\u1ee3c v\u1edbi m\u1ed9t t\u1eeb ho\u1eb7c chu\u1ed7i nhi\u1ec1u t\u1eeb. Nh\u01b0ng \u0111\u01b0\u1ee3c vi\u1ebft v\u1edbi m\u1ee5c \u0111\u00edch \u00e1p d\u1ee5ng cho m\u1ed9t t\u1eeb.<\/p>\n\n\n\n
\/\/ \u00e1p d\u1ee5ng \u0111\u01b0\u1ee3c cho m\u1ed9t t\u1eeb ho\u1eb7c chu\u1ed7i nhi\u1ec1u t\u1eeb\nfunction vn_remove_accents($str){ \/\/ x\u00f3a d\u1ea5u c\u1ee7a m\u1ed9t k\u00fd t\u1ef1 ho\u1eb7c m\u1ed9t t\u1eeb, ho\u1eb7c chu\u1ed7i\n $timbre = vna_hex_timbre(); \/\/ m\u00e3 h\u00f3a hex c\u1ee7a d\u1ea5u ti\u1ebfng Vi\u1ec7t\n $hex = bin2hex(rarely_hex_convert($str)); \/\/ chuy\u1ec3n sang m\u00e3 hex \u0111\u1ec3 t\u00ecm d\u1ea5u\n \n foreach ($timbre as $tim) { \/\/ t\u00e1ch th\u00e0nh c\u00e1c d\u1ea5u\n $pt='\/'.$tim.'\/'; \/\/ t\u1ea1o m\u1eabu\n if (preg_match($pt, $hex)) { \/\/so kh\u1edbp\n $hex = preg_replace($pt,'',$hex); \/\/ kh\u1eed d\u1ea5u c\u1ee7a $hex; n\u00f3 v\u1eabn \u0111ang \u1edf d\u1ea1ng hex\n } \n }\n \n $rs = pop_hex_convert(hex2bin($hex)); \/\/ chuy\u1ec3n v\u1ec1 t\u1eeb m\u00e3 h\u00f3a ph\u1ed5 th\u00f4ng\n if ($rs == \"\") {$rs = $str;} \/\/ d\u1ef1 ph\u00f2ng\n \nreturn $rs;\n}<\/code><\/pre>\n\n\n\n
\n\n\n\n5. T\u00ecm s\u1ed1 l\u01b0\u1ee3ng nguy\u00ean \u00e2m c\u00f3 d\u1ea5u trong m\u1ed9t t\u1eeb<\/strong><\/p>\n\n\n\nC\u00f3 th\u1ec3 \u00e1p d\u1ee5ng \u0111\u01b0\u1ee3c v\u1edbi m\u1ed9t t\u1eeb ho\u1eb7c chu\u1ed7i nhi\u1ec1u t\u1eeb. Nh\u01b0ng \u0111\u01b0\u1ee3c vi\u1ebft v\u1edbi m\u1ee5c \u0111\u00edch \u00e1p d\u1ee5ng cho m\u1ed9t t\u1eeb. <\/p>\n\n\n\n
\/\/ \u00e1p d\u1ee5ng \u0111\u01b0\u1ee3c cho m\u1ed9t t\u1eeb ho\u1eb7c chu\u1ed7i nhi\u1ec1u t\u1eeb\n\/\/ \u0111\u01b0\u1ee3c thi\u1ebft k\u1ebf h\u01b0\u1edbng \u0111\u1ebfn m\u1ed9t t\u1eeb\nfunction vn_num_acc_char($str) { \/\/ t\u00ecm s\u1ed1 l\u01b0\u1ee3ng k\u00fd t\u1ef1 c\u00f3 d\u1ea5u trong m\u1ed9t t\u1eeb\n $rs = 0; \/\/ rs c\u00f3 th\u1ec3 l\u1edbn h\u01a1n 1, nh\u1eefng t\u1eeb \u0111\u01a1n c\u00f3 h\u01a1n m\u1ed9t d\u1ea5u s\u1ebd \u0111\u01b0\u1ee3c xem l\u00e0 l\u1ed7i ch\u00ednh t\u1ea3\n $acc = vna_acc_char_array(); \/\/ l\u1ea5y m\u1ea3ng c\u00e1c nguy\u00ean \u00e2m \u0111\u01a1n c\u00f3 d\u1ea5u\n $strx = pop_hex_convert($str); \/\/ chuy\u1ec3n v\u1ec1 d\u1ea1ng m\u00e3 h\u00f3a ph\u1ed5 bi\u1ebfn, v\u00e0 chuy\u1ec3n v\u1ec1 k\u00fd t\u1ef1 th\u01b0\u1eddng\n foreach ($acc as $acc_char) {\n $pt='\/'.$acc_char.'\/'; \n if (preg_match_all($pt, $strx)) {$rs += preg_match_all($pt, $strx);}\n }\n \nreturn $rs; \n}<\/code><\/pre>\n\n\n\nS\u1eed d\u1ee5ng h\u00e0m preg_match_all<\/code> \u0111\u1ec3 \u0111\u1ebfm s\u1ed1 l\u01b0\u1ee3ng k\u00fd t\u1ef1 \u0111\u01b0\u1ee3c t\u00ecm th\u1ea5y thay v\u00ec preg_match<\/code>, n\u00f3 s\u1ebd gi\u00fap tr\u00e1nh tr\u01b0\u1eddng h\u1ee3p \u0111\u1ebfm thi\u1ebfu khi c\u00f3 2 nguy\u00ean \u00e2m gi\u1ed1ng nhau trong t\u1eeb.<\/p>\n\n\n\n
\n\n\n\n6. T\u00ecm s\u1ed1 l\u01b0\u1ee3ng c\u00e1c nguy\u00ean \u00e2m \u0111\u01a1n (1 k\u00fd t\u1ef1) kh\u00f4ng d\u1ea5u trong m\u1ed9t t\u1eeb<\/strong><\/p>\n\n\n\nC\u00f3 th\u1ec3 \u00e1p d\u1ee5ng \u0111\u01b0\u1ee3c v\u1edbi m\u1ed9t t\u1eeb ho\u1eb7c chu\u1ed7i nhi\u1ec1u t\u1eeb. Nh\u01b0ng \u0111\u01b0\u1ee3c vi\u1ebft v\u1edbi m\u1ee5c \u0111\u00edch \u00e1p d\u1ee5ng cho m\u1ed9t t\u1eeb. <\/p>\n\n\n\n
\/\/ \u00e1p d\u1ee5ng \u0111\u01b0\u1ee3c cho m\u1ed9t t\u1eeb ho\u1eb7c chu\u1ed7i nhi\u1ec1u t\u1eeb\n\/\/ \u0111\u01b0\u1ee3c thi\u1ebft k\u1ebf h\u01b0\u1edbng \u0111\u1ebfn m\u1ed9t t\u1eeb\nfunction vn_num_none_acc_vowel($str) { \/\/ t\u00ecm s\u1ed1 l\u01b0\u1ee3ng c\u00e1c nguy\u00ean \u00e2m \u0111\u01a1n kh\u00f4ng d\u1ea5u trong m\u1ed9t t\u1eeb\n $rs = 0;\n $none_acc_vowel = vna_vowel_lett(); \/\/ c\u00e1c nguy\u00ean \u00e2m \u0111\u01a1n kh\u00f4ng d\u1ea5u m\u00e3 h\u00f3a ph\u1ed5 th\u00f4ng\n $strx = pop_hex_convert($str); \/\/ chuy\u1ec3n v\u1ec1 d\u1ea1ng m\u00e3 h\u00f3a ph\u1ed5 bi\u1ebfn, v\u00e0 chuy\u1ec3n v\u1ec1 k\u00fd t\u1ef1 th\u01b0\u1eddng\n foreach ($none_acc_vowel as $nav) {\n $pt = '\/'.$nav.'\/';\n if (preg_match_all($pt, $strx)) {$rs += preg_match_all($pt, $strx);}\n }\n \nreturn $rs; \/\/ tr\u1ea3 v\u1ec1 s\u1ed1 l\u01b0\u1ee3ng c\u00e1c nguy\u00ean \u00e2m \u0111\u01a1n kh\u00f4ng d\u1ea5u \n}<\/code><\/pre>\n\n\n\nS\u1eed d\u1ee5ng h\u00e0m preg_match_all<\/code> \u0111\u1ec3 \u0111\u1ebfm s\u1ed1 l\u01b0\u1ee3ng k\u00fd t\u1ef1 \u0111\u01b0\u1ee3c t\u00ecm th\u1ea5y thay v\u00ec preg_match<\/code>, n\u00f3 s\u1ebd gi\u00fap tr\u00e1nh tr\u01b0\u1eddng h\u1ee3p \u0111\u1ebfm thi\u1ebfu khi c\u00f3 2 nguy\u00ean \u00e2m gi\u1ed1ng nhau trong t\u1eeb. <\/p>\n\n\n\n
\n\n\n\n7. Ki\u1ec3m tra xem t\u1eeb c\u00f3 k\u00fd t\u1ef1 n\u01b0\u1edbc ngo\u00e0i hay kh\u00f4ng<\/strong><\/p>\n\n\n\n\u00c1p d\u1ee5ng \u0111\u01b0\u1ee3c v\u1edbi m\u1ed9t t\u1eeb, c\u0169ng nh\u01b0 m\u1ed9t chu\u1ed7i nhi\u1ec1u t\u1eeb.<\/p>\n\n\n\n
\/\/ \u00e1p d\u1ee5ng \u0111\u01b0\u1ee3c v\u1edbi m\u1ed9t t\u1eeb, c\u0169ng nh\u01b0 m\u1ed9t chu\u1ed7i nhi\u1ec1u t\u1eeb\nfunction vn_foreign_check_low($str) { \/\/ tr\u1ea3 v\u1ec1 1 n\u1ebfu c\u00f3 k\u00fd t\u1ef1 n\u01b0\u1edbc ngo\u00e0i, tr\u1ea3 v\u1ec1 0 n\u1ebfu kh\u00f4ng c\u00f3\n $rs=0;\n $fr = array(\"f\",\"j\",\"w\",\"z\"); \/\/ t\u00ecm c\u00e1c k\u00fd t\u1ef1 n\u01b0\u1edbc ngo\u00e0i, b\u00ecnh th\u01b0\u1eddng kh\u00f4ng c\u00f3 trong ti\u1ebfng Vi\u1ec7t\n $hex = pop_hex_convert($str); \/\/ chuy\u1ec3n v\u1ec1 d\u1ea1ng vi\u1ebft th\u01b0\u1eddng, m\u00e3 h\u00f3a ph\u1ed5 bi\u1ebfn\n foreach ($fr as $fr2) {\n $pt = '\/'.$fr2.'\/';\n $r = preg_match($pt, $hex);\n if ($r > 0) {$rs=1; break;} \/\/ ch\u1ec9 c\u1ea7n c\u00f3 m\u1ed9t k\u00fd t\u1ef1 n\u01b0\u1edbc ngo\u00e0i l\u00e0 \u0111\u1ee7 \u0111\u1ec3 t\u00ean kh\u00f4ng ph\u1ea3i l\u00e0 d\u1ea1ng thu\u1ea7n Vi\u1ec7t \n }\n \nreturn $rs; \n}<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"Ph\u1ea7n n\u00e0y t\u00f4i s\u1ebd x\u00e2y d\u1ef1ng c\u00e1c h\u00e0m \u0111\u1ec3 thao t\u00e1c s\u00e2u h\u01a1n v\u1edbi chu\u1ed7i ti\u1ebfng Vi\u1ec7t n\u00f3i chung, v\u00e0 h\u1ecd t\u00ean ng\u01b0\u1eddi Vi\u1ec7t n\u00f3i ri\u00eang. C\u00e1i n\u00e0y s\u1ebd s\u1eed d\u1ee5ng c\u00e1c function \u0111\u1ed9c l\u1eadp tr\u01b0\u1edbc \u0111\u00f3 l\u00e0: C\u00e1c h\u00e0m chuy\u1ec3n m\u00e3 hex; C\u00e1c m\u1ea3ng ph\u1ee5 \u00e2m, nguy\u00ean \u00e2m, d\u1ea5u ti\u1ebfng Vi\u1ec7t; M\u00e3 \u0111\u1ea7y \u0111\u1ee7 …<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[238,241],"tags":[],"yoast_head":"\n
C\u00e1c h\u00e0m PHP \u0111\u1ec3 thao t\u00e1c v\u1edbi chu\u1ed7i ti\u1ebfng Vi\u1ec7t (v1.2) • Ki\u1ebfn c\u00e0ng<\/title>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\n\t\n\t\n","yoast_head_json":{"title":"C\u00e1c h\u00e0m PHP \u0111\u1ec3 thao t\u00e1c v\u1edbi chu\u1ed7i ti\u1ebfng Vi\u1ec7t (v1.2) • Ki\u1ebfn c\u00e0ng","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kiencang.net\/php-thao-tac-chuoi-tieng-viet-v12\/","og_locale":"vi_VN","og_type":"article","og_title":"C\u00e1c h\u00e0m PHP \u0111\u1ec3 thao t\u00e1c v\u1edbi chu\u1ed7i ti\u1ebfng Vi\u1ec7t (v1.2) • Ki\u1ebfn c\u00e0ng","og_description":"Ph\u1ea7n n\u00e0y t\u00f4i s\u1ebd x\u00e2y d\u1ef1ng c\u00e1c h\u00e0m \u0111\u1ec3 thao t\u00e1c s\u00e2u h\u01a1n v\u1edbi chu\u1ed7i ti\u1ebfng Vi\u1ec7t n\u00f3i chung, v\u00e0 h\u1ecd t\u00ean ng\u01b0\u1eddi Vi\u1ec7t n\u00f3i ri\u00eang. C\u00e1i n\u00e0y s\u1ebd s\u1eed d\u1ee5ng c\u00e1c function \u0111\u1ed9c l\u1eadp tr\u01b0\u1edbc \u0111\u00f3 l\u00e0: C\u00e1c h\u00e0m chuy\u1ec3n m\u00e3 hex; C\u00e1c m\u1ea3ng ph\u1ee5 \u00e2m, nguy\u00ean \u00e2m, d\u1ea5u ti\u1ebfng Vi\u1ec7t; M\u00e3 \u0111\u1ea7y \u0111\u1ee7 …","og_url":"https:\/\/kiencang.net\/php-thao-tac-chuoi-tieng-viet-v12\/","og_site_name":"Ki\u1ebfn c\u00e0ng","article_author":"https:\/\/www.facebook.com\/anhducnguyen87\/","article_published_time":"2021-09-17T08:49:15+00:00","author":"Nguy\u1ec5n \u0110\u1ee9c Anh","twitter_card":"summary_large_image","twitter_misc":{"\u0110\u01b0\u1ee3c vi\u1ebft b\u1edfi":"Nguy\u1ec5n \u0110\u1ee9c Anh","\u01af\u1edbc t\u00ednh th\u1eddi gian \u0111\u1ecdc":"7 ph\u00fat"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/kiencang.net\/php-thao-tac-chuoi-tieng-viet-v12\/","url":"https:\/\/kiencang.net\/php-thao-tac-chuoi-tieng-viet-v12\/","name":"C\u00e1c h\u00e0m PHP \u0111\u1ec3 thao t\u00e1c v\u1edbi chu\u1ed7i ti\u1ebfng Vi\u1ec7t (v1.2) • Ki\u1ebfn c\u00e0ng","isPartOf":{"@id":"https:\/\/kiencang.net\/#website"},"datePublished":"2021-09-17T08:49:15+00:00","dateModified":"2021-09-17T08:49:15+00:00","author":{"@id":"https:\/\/kiencang.net\/#\/schema\/person\/5e7e1a04d8d1218ad8c421ba43d25c16"},"breadcrumb":{"@id":"https:\/\/kiencang.net\/php-thao-tac-chuoi-tieng-viet-v12\/#breadcrumb"},"inLanguage":"vi","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kiencang.net\/php-thao-tac-chuoi-tieng-viet-v12\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/kiencang.net\/php-thao-tac-chuoi-tieng-viet-v12\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kiencang.net\/"},{"@type":"ListItem","position":2,"name":"C\u00e1c h\u00e0m PHP \u0111\u1ec3 thao t\u00e1c v\u1edbi chu\u1ed7i ti\u1ebfng Vi\u1ec7t (v1.2)"}]},{"@type":"WebSite","@id":"https:\/\/kiencang.net\/#website","url":"https:\/\/kiencang.net\/","name":"Ki\u1ebfn c\u00e0ng","description":"\u00d4m l\u00fd thuy\u1ebft, h\u00f4n th\u1ef1c h\u00e0nh","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kiencang.net\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"vi"},{"@type":"Person","@id":"https:\/\/kiencang.net\/#\/schema\/person\/5e7e1a04d8d1218ad8c421ba43d25c16","name":"Nguy\u1ec5n \u0110\u1ee9c Anh","image":{"@type":"ImageObject","inLanguage":"vi","@id":"https:\/\/kiencang.net\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/6d71f9b89393952a8382e30dad26c1ec?s=96&d=monsterid&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/6d71f9b89393952a8382e30dad26c1ec?s=96&d=monsterid&r=g","caption":"Nguy\u1ec5n \u0110\u1ee9c Anh"},"description":"Sinh n\u0103m 1987, t\u1ed1t nghi\u1ec7p Cao \u0111\u1eb3ng th\u1ef1c h\u00e0nh FPT qu\u00e3ng 2014, chuy\u00ean ng\u00e0nh Thi\u1ebft k\u1ebf website. T\u00f4i th\u00edch Content, SEO, Ads, T\u0103ng t\u1ed1c website v\u00e0 Th\u01b0\u01a1ng m\u1ea1i \u0111i\u1ec7n t\u1eed. B\u00ean c\u1ea1nh b\u00e0i t\u1ef1 vi\u1ebft, t\u00f4i c\u0169ng d\u1ecbch nhi\u1ec1u n\u1ed9i dung th\u00fa v\u1ecb c\u1ee7a c\u00e1c t\u00e1c gi\u1ea3 kh\u00e1c nhau. FB c\u00e1 nh\u00e2n: facebook.com\/anhducnguyen87. Email li\u00ean h\u1ec7: guiemailchotoi@gmail.com","sameAs":["https:\/\/www.facebook.com\/anhducnguyen87\/"],"url":"https:\/\/kiencang.net\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/kiencang.net\/wp-json\/wp\/v2\/posts\/14874"}],"collection":[{"href":"https:\/\/kiencang.net\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kiencang.net\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kiencang.net\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kiencang.net\/wp-json\/wp\/v2\/comments?post=14874"}],"version-history":[{"count":0,"href":"https:\/\/kiencang.net\/wp-json\/wp\/v2\/posts\/14874\/revisions"}],"wp:attachment":[{"href":"https:\/\/kiencang.net\/wp-json\/wp\/v2\/media?parent=14874"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kiencang.net\/wp-json\/wp\/v2\/categories?post=14874"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kiencang.net\/wp-json\/wp\/v2\/tags?post=14874"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}