php 中文和编码判断代码


Posted in PHP onMay 16, 2010

编码范围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);
二、代码例子

//判断内容里有没有中文-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<strlen($str); $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<strlen($str); $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<str.length; 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 相关文章推荐
PHP zlib扩展实现页面GZIP压缩输出
Jun 17 PHP
PHP的5个安全措施小结
Jul 17 PHP
Could not load type System.ServiceModel.Activation.HttpModule解决办法
Dec 29 PHP
php中将html中的br换行符转换为文本输入中的换行符
Mar 26 PHP
Java和PHP在Web开发方面对比分析
Mar 01 PHP
PHP执行SQL文件并将SQL文件导入到数据库
Sep 17 PHP
Yii2.0预定义的别名功能小结
Jul 04 PHP
PHP打印输出函数汇总
Aug 28 PHP
Symfony2创建基于域名的路由相关示例
Nov 14 PHP
php基于数组函数实现关联表的编辑操作示例
Jul 04 PHP
thinkphp5引入公共部分header、footer的方法详解
Sep 14 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
Mar 24 PHP
PHP URL地址获取函数代码(端口等) 推荐
May 15 #PHP
php select,radio和checkbox默认选择的实现方法
May 15 #PHP
php checkbox复选框值的获取与checkbox默认值输出方法
May 15 #PHP
php radio 单选框获取与保持值的实现代码
May 15 #PHP
php imagecreatetruecolor 创建高清和透明图片代码小结
May 15 #PHP
php gd2 上传图片/文字水印/图片水印/等比例缩略图/实现代码
May 15 #PHP
php getimagesize 上传图片的长度和宽度检测代码
May 15 #PHP
You might like
php抓即时股票信息
2006/10/09 PHP
用PHP生成静态HTML速度快类库
2007/03/18 PHP
php 中英文语言转换类代码
2011/08/11 PHP
mac环境中使用brew安装php5.5.15
2014/08/18 PHP
php中FTP函数ftp_connect、ftp_login与ftp_chmod用法
2014/11/18 PHP
php查找指定目录下指定大小文件的方法
2014/11/28 PHP
PHP基于堆栈实现的高级计算器功能示例
2017/09/15 PHP
PHP实现通过文本文件统计页面访问量功能示例
2019/02/13 PHP
cnblogs 代码高亮显示后的代码复制问题解决实现代码
2011/12/14 Javascript
js实现在文本框光标处添加字符的方法介绍
2012/11/24 Javascript
关于Javascript作用域链的八点总结
2013/12/06 Javascript
使用delegate方法为一个tr标签加一个链接
2014/06/27 Javascript
使用nodejs、Python写的一个简易HTTP静态文件服务器
2014/07/18 NodeJs
Node.js开发之访问Redis数据库教程
2015/01/14 Javascript
七个不允许错过的jQuery小技巧
2015/12/21 Javascript
javascript实现数组去重的多种方法
2016/03/14 Javascript
javascript基础知识
2016/06/07 Javascript
nodejs 实现钉钉ISV接入的加密解密方法
2017/01/16 NodeJs
Vue.js学习之过滤器详解
2017/01/22 Javascript
JavaWeb表单及时验证功能在输入后立即验证(含用户类型,性别,爱好...的验证)
2017/06/09 Javascript
nodejs之koa2请求示例(GET,POST)
2018/08/07 NodeJs
基于Vant UI框架实现时间段选择器
2020/12/24 Javascript
[03:03]DOTA2 2017国际邀请赛开幕战队入场仪式
2017/08/09 DOTA
[59:48]DOTA2-DPC中国联赛 正赛 VG vs Magma BO3 第一场 1月26日
2021/03/11 DOTA
python基础教程之Hello World!
2014/08/29 Python
浅析Python中元祖、列表和字典的区别
2016/08/17 Python
Python进阶之递归函数的用法及其示例
2018/01/31 Python
Python3连接SQLServer、Oracle、MySql的方法
2018/06/28 Python
python多进程重复加载的解决方式
2019/12/13 Python
用python进行视频剪辑
2020/11/02 Python
Jupyter Notebook 远程访问配置详解
2021/01/11 Python
Wiggle美国:英国骑行、跑步、游泳、铁人三项商店
2018/10/27 全球购物
英国百年闻名的优质健康产品连锁店:Holland & Barrett
2019/12/19 全球购物
带薪年假请假条
2014/02/04 职场文书
Python中tkinter的用户登录管理的实现
2021/04/22 Python
详解MySQL 联合查询优化机制
2021/05/10 MySQL