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 相关文章推荐
关于IIS php调用com组件的权限问题
Jan 11 PHP
将时间以距今多久的形式表示,PHP,js双版本
Sep 25 PHP
php保存二进制原始数据为图片的程序代码
Oct 14 PHP
php实现图片文件与下载文件防盗链的方法
Nov 03 PHP
php实现字符串翻转的方法
Mar 27 PHP
PHP实现的蚂蚁爬杆路径算法代码
Dec 03 PHP
CentOS下PHP7的编译安装及MySQL的支持和一些常见问题的解决办法
Dec 17 PHP
基于CI框架的微信网页授权库示例
Nov 25 PHP
php中this关键字用法分析
Dec 07 PHP
php表单文件iframe异步上传实例讲解
Jul 26 PHP
thinkPHP框架自动填充原理与用法分析
Apr 03 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
Feb 27 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 数组排序方法总结 推荐收藏
2010/06/30 PHP
Thinkphp搭建包括JS多语言的多语言项目实现方法
2014/11/24 PHP
php类自动装载、链式操作、魔术方法实现代码
2017/07/23 PHP
ThinkPHP实现的rsa非对称加密类示例
2018/05/29 PHP
PHP7 弃用功能
2021/03/09 PHP
javascript中最常用的继承模式 组合继承
2010/08/12 Javascript
通过隐藏iframe实现文件下载的js方法介绍
2014/02/26 Javascript
jQuery实现菜单感应鼠标滑动动画效果的方法
2015/02/28 Javascript
基于jQuery实现仿淘宝套餐选择插件
2015/03/04 Javascript
jquery实现漫天雪花飞舞的圣诞祝福雪花效果代码分享
2015/08/20 Javascript
jquery捕捉回车键及获取checkbox值与异步请求的方法
2015/12/24 Javascript
JS实现复制内容到剪贴板功能兼容所有浏览器(推荐)
2016/06/17 Javascript
jQuery Validate验证表单时多个name相同的元素只验证第一个的解决方法
2016/12/24 Javascript
如何用js判断dom是否有存在某class的值
2017/02/13 Javascript
js实现功能比较全面的全选和多选
2017/03/02 Javascript
node.js调用Chrome浏览器打开链接地址的方法
2017/05/17 Javascript
ES6中javascript实现函数绑定及类的事件绑定功能详解
2017/11/08 Javascript
JQuery通过后台获取数据遍历到前台的方法
2018/08/13 jQuery
实例详解vue.js浅度监听和深度监听及watch用法
2018/08/16 Javascript
vue实现鼠标移过出现下拉二级菜单功能
2019/12/12 Javascript
javascript设计模式 ? 装饰模式原理与应用实例分析
2020/04/14 Javascript
python回溯法实现数组全排列输出实例分析
2015/03/17 Python
Python的Twisted框架上手前所必须了解的异步编程思想
2016/05/25 Python
《Python学习手册》学习总结
2018/01/17 Python
如何使用Python标准库进行性能测试
2019/06/25 Python
Python机器学习算法库scikit-learn学习之决策树实现方法详解
2019/07/04 Python
Python单元测试工具doctest和unittest使用解析
2019/09/02 Python
CSS3旋转——彩色扇子兼容firefox浏览器
2013/06/04 HTML / CSS
什么是组件架构
2016/05/15 面试题
大学生毕业自我评价范文分享
2013/11/11 职场文书
《沙漠中的绿洲》教学反思
2014/04/24 职场文书
个人工作作风整改措施思想汇报
2014/10/13 职场文书
2015年四年级班主任工作总结
2015/10/22 职场文书
李白经典诗之一:全文无一“月”字,却句句有月
2019/07/12 职场文书
浅谈自定义校验注解ConstraintValidator
2021/06/30 Java/Android
基于angular实现树形二级表格
2021/10/16 Javascript