首页 > php > PHP如何检测字符串里有没有繁体字
2022
04-23

PHP如何检测字符串里有没有繁体字

检测UTF-8字符串里有没有繁体字

我们可以使用iconv()这个函数,然后将字符串的编码由UTF-8转换成GB2312,这个方法的原理是:GB2312是简体中文的字符集,如果将含有繁体字的字符串转换成GB2312编码,iconv函数会返回false。不说那么多了,下面直接上代码:

<?php
/**
 * 检测一个UTF-8字符串里是否包含繁体中文
 * @param string $str
 * @return bool
 */
function is_cn_traditional($str) {
    return iconv('UTF-8', 'GB2312', $str) === false ? true : false;
}
 
$ft_str = '這是繁體中文';
$jt_str = '这是简体中文';
var_dump(is_cn_traditional($ft_str)); // 输出true
var_dump(is_cn_traditional($jt_str)); // 输出false
?>



注意

对于一些比较特殊的字,上面的函数并没有做处理,所以识别可能会有误。例如乾(gan)淨的“乾”和乾(qian)坤的“乾”字,都是“乾”字,但它在第一个词语里是繁体字,在第二个词语里就变成简体字了
一些不在GB2312字符集里的字符(例如韩语)也会被误当成是繁体字


GB2312和UTF-8区别与用法

gb2312和utf-8就都是一种字符编码。在之前的文章【gbk和gb2312的区别有哪些?】中,已经为大家总结了gbk与gb2312的区别,并且也具体介绍了什么是字符编码?需要的朋友可以前去参考了解。


GB2312是一个简体中文字符集,由6763个常用汉字和682个全角的非汉字字符组成。gb2312 是国标,是中国的字库,里面仅涵盖了汉字和一些常用外文,比如日文片假名,和常见的符号。


UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,又称万国码,由Ken Thompson于1992年创建。现在已经标准化为RFC 3629。UTF-8用1到6个字节编码Unicode字符。


UTF-8里面存储一个汉字3个字节。而gb2312中存储一个汉字2个字节。


gb2312和utf-8的主要区别:


关于字库规模: UTF-8 > gb2312(utf8字全而gb2312只有汉字)


关于保存大小: UTF-8> gb2312 (utf8更臃肿、加载更慢,gb2312更小巧,加载更快)


关于适用范围:gb2312主要在中国大陆地区使用,是一个本地化的字符集,UTF-8包含全世界所有国家需要用到的字符,是国际编码,通用性强。UTF-8编码的文字可以在各国支持UTF8字符集的浏览器上显示。

本文》有 0 条评论

留下一个回复