PHP判断字符串是否为中文(或英文)的方法,除了正则表达式判断和拆分字符判断字符的值是否小于128

外还有一种比较特别的方法。

使用php中的mb_strlen和strlen函数判断
方法比较简单:分别使用以上两个函数以当前编码测出字符的返回值,然后比较返回值。
返回值相等的为纯英文、纯数字、英数混排;
返回值不等,且strlen返回值可被mb_strlen整除的为纯汉字
返回值不等,且strlen返回值不可被mb_strlen整除的为英汉或数汉混排

看一下以下的例子:

<?php
$strarray[1] = "hello";
$strarray[2] = "123456";
$strarray[3] = "123hello";
$strarray[4] = "你好";
$strarray[5] = "123你好";
$strarray[6] = "hello你好";
$strarray[7] = "123hello你好"; foreach ($strarray as $key->$value)
{ $x = mb_strlen($value,'gb2312'); $y = strlen($value); echo $strarray[$key].'  <span style="color: #ff0000;">'.$x.'</span> <span style="color:#ff0000;">'.$y.'</span>';
} ?> 

运行后的结果是:
hello 5 5
123456 6 6
123hello 8 8
你好 2 4
123你好 5 7
hello你好 7 9
123hello你好 10 12

来源: http://007blogchina.appspot.com/?p=130001

HP没有直接函数来判断一个字符串是否是纯英文或纯汉字以及汉英混合,只能自己写函数。要想实现此功能就必需对字符集汉字编码占位进行了解,就目前国内比较常用的字符集当属UTF8与GBK了。

UTF8每个汉字等于3个长度;

GBK每个汉字等于2个长度;

利用以上汉字与英文的差异,我们就可以利用mb_strlen函数与strlen函数分别计算出两组长度数字,然后根据规律进行运算即可判断出字符串的类型了。

UTF-8实例

<?php
/*** PHP判断字符串纯汉字 OR 纯英文 OR 汉英混合*/
echo '<meta charset="utf-8" />';
function utf8_str($str){$mb = mb_strlen($str,'utf-8');$st = strlen($str);if($st==$mb)return '纯英文';if($st%$mb==0 && $st%3==0)return '纯汉字';return '汉英混合';
}$str = '博客';
echo '字符串:<span style="color:red">'.$str.'</span>,是<span style="color:red">'.utf8_str($str).'</span>';
?>

GBK方法

function gbk_str($str){$mb = mb_strlen($str,'gbk');$st = strlen($str);if($st==$mb)return '纯英文';if($st%$mb==0 && $st%2==0)return '纯汉字';return '汉英混合';
}

来源: http://www.qttc.net/201207142.html

PHP判断字符串是纯英文、纯汉字或汉英混合相关推荐

  1. Qt:文本过长自动换行(支持纯英文, 纯数字)

    此代码原理是获取字符串像素长度后, 超出设置的限制宽度后进行截取操作加换行符从而达到自动换行效果 Qt的Lable自带的换行属性不支持纯英文,纯数字的字符串换行 // font 设置的字体属性 // ...

  2. JAVA判断字符串中是否包含中文汉字

    汉字的Unicode范围扩展了好多次了,网上的各种判断正则都是之前的,漏了很多 汉字 下面是最新的最全的判断正则 /*** 判断字符串中是否包含中文汉字** @param content* @retu ...

  3. 判断字符串是否是英文

    1.判断字符串中是否全为英文 boolean result = str.matches("[a-zA-Z]+");    //true:全文英文   str.matches(&qu ...

  4. JS判断字符串长度(英文占1个字符,中文汉字占2个字符)

    //计算字符串长度(英文占1个字符,中文汉字占2个字符) 方法一: String.prototype.gblen = function() { var len = 0; for (var i=0; i ...

  5. JAVA识别字符串是数字(英文)还是汉字,web页面进行字符截断的帮助类

    public static void main(String[] args) {//长度是2说明是英文/数字/英文状态下的字符,长度为4说明是汉字/中文状态下的字符String str = " ...

  6. php字符是汉字还是字符,php判断字符串中是否包含中文汉字和获得字符串中的汉字...

    一,判断全是中文 $str="'324是中国人"; if(!eregi("[^\x80-\xff]","$str")){ echo &quo ...

  7. vue 判断字符串是否是英文_JS判断字符串长度的5个方法(区分中文和英文)

    目的:计算字符串长度(英文占1个字符,中文汉字占2个字符) 方法一: 代码如下: String.prototype.gblen = function() { var len = 0; for (var ...

  8. php判断字符串里有英文,PHP针对中英文混合字符串长度判断及截取方法示例

    本文实例讲述了PHP针对中英文混合字符串长度判断及截取方法.分享给大家供大家参考,具体如下: /** * * 中英混合字符串长度判断 * @param unknown_type $str * @par ...

  9. java 判断是否包含中文_Java中判断字符串中是否包含中文汉字

    一般在用户登录时需要判断用户名是否为中文汉字,可以使用正则表达式,来匹配字符是否包含中文,中文通配符为[u4e00-u9fa5]匹配中文,下面为大家分享一下使用Matcher来解决此问题. 代码如下: ...

最新文章

  1. 实战DeviceIoControl 之中的一个:通过API訪问设备驱动程序
  2. js 判断对象是否为空
  3. 超干货 | 泰勒图(Taylor diagram)绘制方法大汇总
  4. java如何确保单线程_java是如何解决单线程之间的通信问题呢?这篇文章给你答案...
  5. web-使用wsgiref模块模拟web框架
  6. Camera中对焦模式总结
  7. Linux环境下软件安装
  8. [Book]《云计算核心技术剖析》读书笔记
  9. 惠普服务器自动装驱动安装,Win10系统不断自动安装HP打印机驱动且报错0x80240017的解决方法...
  10. SSM项目实战:App信息管理平台(含源码与设计分析)
  11. 微信支付商户号商家转账到零钱现金红包如何开通
  12. 海伦公式——初中数学证明
  13. 计算机硬盘能改成移动硬盘,旧硬盘怎么改装成移动硬盘
  14. vue各模块功能范围,webpack属性配置
  15. xpdl关于join和split的定义的翻译。(转)
  16. 身份认证协议攻击怎么解决
  17. 深度学习框架Caffe学习系列(2):Ristretto 量化 cifar_small 实验记录
  18. [Vue][面试]你怎么理解vue中的diff算法?
  19. 端口映射工具rinetd
  20. YOJ3509-小豪搬宝藏

热门文章

  1. 信息学奥赛一本通C++语言——1027:输出浮点数
  2. 31 MM配置-采购-采购申请-采购申请审批策略-定义审批过程
  3. linux如何修改用户标识符,linux 修改文件标识符
  4. 执行器接线图_风机盘管组装全过程,盘管与接管接线图,拿走不谢!
  5. python 计算每日累计_5分钟学会用Python可视化数据分析美股
  6. STM32那点事之构建工程模板
  7. ros melodic 版本sudo rosdep init和rosdep upgrade失败的解决办法
  8. PSPNet网络要点
  9. cookie无法读取bdstoken_Web自动化测试:对cookie的操作
  10. 华为ac控制器web配置手册_欧姆龙AC伺服系统1S系列产品型号说明及功能介绍