// 返回: true - 含GB编码 false - 为UTF-8编码

function is_gb2312($str)

{

for($i=0; $i

$v = ord( $str[$i] );

if( $v > 127) {

if( ($v >= 228) && ($v <= 233) )

{

if( ($i+2) >= (strlen($str) - 1)) return true;  // not enough characters

$v1 = ord( $str[$i+1] );

$v2 = ord( $str[$i+2] );

if( ($v1 >= 128) && ($v1 <=191) && ($v2 >=128) && ($v2 <= 191) ) // utf编码

return false;

else

return true;

}

}

}

return true;

}

-----------------------------------------------------------------------------------------------------------------------------------------------------------

判断中文和编码有关 gbk是双字节,utf8是三字节,可以根据 中文的范围来判断

编码范围1. GBK (GB2312/GB18030)

\x00-\xff GBK双字节编码范围

\x20-\x7f ASCII

\xa1-\xff 中文

\x80-\xff 中文

2. UTF-8 (Unicode)

\u4e00-\u9fa5 (中文)

\x3130-\x318F (韩文

\xAC00-\xD7A3 (韩文)

\u0800-\u4e00 (日文)

ps: 韩文是大于[\u9fa5]的字符

正则例 子:

preg_replace(”/([\x80-\xff])/”,”",$str);

preg_replace(”/([u4e00-u9fa5])/”,”",$str);

二、代码例子

1.  //判断内容里有没有中文 -GBK (PHP)

function check_is_chinese($s){

return preg_match('/[\x80-\xff]./', $s);

}

//获取字符串长度 -GBK (PHP)

function gb_strlen($str){

$count = 0;

for($i=0; $i

$s = substr($str, $i, 1);

if (preg_match("/[\x80-\xff]/", $s)) ++$i;

++$count;

}

return $count;

}

//截取字符串字 串 -GBK (PHP)

function gb_substr($str, $len){

$count = 0;

for($i=0; $i

if($count == $len) break;

if(preg_match("/[\x80-\xff]/", substr($str, $i, 1))) ++$i;

++$count;

}

return substr($str, 0, $i);

}

//统计字符串长度 -UTF8 (PHP)

function utf8_strlen($str) {

$count = 0;

for($i = 0; $i < strlen($str); $i++){

$value = ord($str[$i]);

if($value > 127) {

$count++;

if($value >= 192 && $value <= 223) $i++;

elseif($value >= 224 && $value <= 239) $i = $i + 2;

elseif($value >= 240 && $value <= 247) $i = $i + 3;

else die('Not a UTF-8 compatible string');

}

$count++;

}

return $count;

}

//截取字符串 -UTF8(PHP)

function utf8_substr($str,$position,$length){

$start_position = strlen($str);

$start_byte = 0;

$end_position = strlen($str);

$count = 0;

for($i = 0; $i < strlen($str); $i++){

if($count >= $position && $start_position > $i){

$start_position = $i;

$start_byte = $count;

}

if(($count-$start_byte)>=$length) {

$end_position = $i;

break;

}

$value = ord($str[$i]);

if($value > 127){

$count++;

if($value >= 192 && $value <= 223) $i++;

elseif($value >= 224 && $value <= 239) $i = $i + 2;

elseif($value >= 240 && $value <= 247) $i = $i + 3;

else die('Not a UTF-8 compatible string');

}

$count++;

}

return(substr($str,$start_position,$end_position-$start_position));

}

//判断是否是有韩文 -UTF- 8 (JavaScript)

function checkKoreaChar(str) {

for(i=0; i

if(((str.charCodeAt(i) > 0x3130 && str.charCodeAt(i) < 0x318F)

|| (str.charCodeAt(i) >= 0xAC00 && str.charCodeAt(i) <= 0xD7A3))) {

return true;

}

}

return false;

}

//判断是否有中文字 符 -GBK (JavaScript)

function check_chinese_char(s){

return (s.length != s.replace(/[^\x00-\xff]/g,"**").length);

}

PHP搜索utf和gbk,php中判断是gbk还是utf相关推荐

  1. php保存gbk字符串,php判断字符串gbk/utf8编码和转换

    代码就点击进来看吧.前段时间聊天的时候卜卜口提到可以由程序提取歌曲文件的ID3信息,这样就免去那些音乐上传时候用户填写表单的步骤.仔细想想这么利国利民的东西必需试试!首先考虑到的就是编码的判断,在网上 ...

  2. java中判断字符串乱码_java中如何判断字符串是否乱码

    java中如何判断字符串是否乱码 发布时间:2020-06-18 13:43:41 来源:亿速云 阅读:113 作者:鸽子 项目中有一个功能 在IE中GET方式提交会产生乱码 但有两个入口都会走这同一 ...

  3. python语句结束符_python中判断文件结束符的具体方法

    python中判断文件结束符的方法:可以使用try except语句块来进行判断. 具体使用方法:[try:while True:s = input() except EOFError: pass]. ...

  4. python判断linux中文件是否存在_linux shell 中判断文件、目录是否存在的方法

    本文主要介绍了linux shell 中判断文件.目录是否存在的方法,分享给大家 -e filename 如果 filename存在,则为真 -d filename 如果 filename为目录,则为 ...

  5. php if为空那么,PHP中判断数组是否为空的方法

    PHP中判断数组为空的方法有好几种,但当遇到判断多维数组时,这些方法都无法判别数组是否为空,现在下面先介绍从网上搜索到判断一维数组的方法. PHP判断数组为空之一.for循环 最简单也是最直接的方法, ...

  6. 搜索和遍历在图中有何区别和联系?

    我们都知道有深度/广度优先搜索 和 深度/广度优先遍历,而且都称其为DFS和BFS, 那么他们在图的算法中有什么区别呢?如果没区别那肯定不会是不同的部分吧~ 这篇文章就给出我的一些理解 问题的提出 今 ...

  7. linux判断目录是否存在命令,linux shell 中判断文件、目录是否存在的方法

    本文主要介绍了linux shell 中判断文件.目录是否存在的方法,分享给大家 -e filename 如果 filename存在,则为真 -d filename 如果 filename为目录,则为 ...

  8. 图谱实战 | 知识图谱在美团搜索酒旅场景认知中的应用

    分享嘉宾:陈骐 美团 高级算法专家 编辑整理:毛佳豪 中国平安浙江分公司(实习) 出品平台:DataFunTalk 导读:知识图谱凭借能够以图模型描述知识和世界万物关联关系的特性,在各行业领域大放异彩 ...

  9. java 中判断字符是否为big5码_【转载】判断一个字符是西文字符还是中文字符

    转载:http://blog.chinaunix.net/u2/70445/showart_1133335.html 一.判断一个字符是西文字符还是中文字符    大家知道西文字符主要是指ASCII码 ...

最新文章

  1. hadoop完全分布式集群安装
  2. mysql jdbc路径,mysql转存数据库后,如何修改jdbc:mysql的路径
  3. 虚拟化技术知识点初步梳理
  4. 安卓--L2T虚拟连接
  5. 两年了,你还是那个你 | 今日最佳
  6. [JavaWeb-Tomcat]web服务器软件_Tomcat介绍
  7. 数据源管理 | 主从库动态路由,AOP模式读写分离
  8. Honey Dance I believe
  9. 8-5安装redis-sentinel
  10. 《创意特训营——30天超级灵感唤醒术》—第1章1.6节小结
  11. android5.0+art模式,Android 5.0有哪些变化
  12. 第三季-第24课-TCP通讯程序设计
  13. java毕业设计——基于java+JavaBean+jsp的网上零食销售系统设计与实现(毕业论文+程序源码)——网上零食销售系统
  14. 通过Cadence学拉扎维的第2天-mos的IV曲线、体效应
  15. OpenGL ES glew 下载和使用
  16. 联想rd650怎么装系统win7_联想启天M4650台式机win10怎么改win7
  17. ubuntu18.04 虚拟机重启后变成只读模式,怎么恢复?
  18. Postman中文文档——安装与更新
  19. 揭秘封包辅助外G:封包外G初体验(四)
  20. 【精品,面试之前必读】【转贴】安氏大俗商业学(2005-8-28)

热门文章

  1. D2 前端技术论坛流水账
  2. 京东物流组织架构分析,要有具体数据
  3. seneca mysql_Seneca :NodeJS 微效劳框架入门指南
  4. SHBrowseForFolder 打开默认路径
  5. 斯坦福计算机音乐专业,斯坦福大学以计算机为基础的音乐理论和声学文学硕士研究生申请要求及申请材料要求清单...
  6. es6 数组找最大值_在对象数组中查找属性的最大值
  7. 20190731杭电多校第四场
  8. Java项目:SSH羽毛球馆管理系统
  9. 这才叫脑洞P图,简直看到怀疑人生!
  10. 视频流分片后的ts片,H265压缩。复制时间流命令