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 异常处理实现代码
Mar 10 PHP
将文件夹压缩成zip文件的php代码
Dec 14 PHP
字母顺序颠倒而单词顺序不变的php代码
Aug 08 PHP
PHP获取表单textarea数据中的换行问题
Sep 10 PHP
PHP对象转换为数组函数(递归方法)
Feb 04 PHP
PHP中去掉字符串首尾空格的方法
May 19 PHP
细谈php中SQL注入攻击与XSS攻击
Jun 10 PHP
php生成略缩图代码
Jul 16 PHP
PHP中空字符串介绍0、null、empty和false之间的关系
Sep 25 PHP
thinkphp连贯操作实例分析
Nov 22 PHP
php 读取输出其他文件的实现方法
Jul 26 PHP
Yii CDBCriteria常用方法实例小结
Jan 19 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 操作excel文件的方法小结
2009/12/31 PHP
求PHP数组最大值,最小值的代码
2011/10/31 PHP
浏览器关闭后,能继续执行的php函数(ignore_user_abort)
2012/08/01 PHP
PHP实现支持SSL连接的SMTP邮件发送类
2015/03/05 PHP
如何优雅的使用 laravel 的 validator验证方法
2018/11/11 PHP
tp5(thinkPHP5)框架连接数据库的方法示例
2018/12/24 PHP
TP - 比RBAC更好的权限认证方式(Auth类认证)
2021/03/09 PHP
类之Prototype.js学习
2007/06/13 Javascript
使用dynatrace-ajax跟踪JavaScript的性能
2010/04/12 Javascript
window.parent与window.openner区别介绍
2012/04/12 Javascript
基于jquery的图片幻灯展示源码
2012/07/15 Javascript
toggle()隐藏问题的解决方法
2014/02/17 Javascript
JS对文本框值的判断示例
2014/03/10 Javascript
用json方式实现在 js 中建立一个map
2014/05/02 Javascript
js实现延迟加载的方法
2015/06/24 Javascript
详解PHP后期静态绑定分析与应用
2018/03/21 Javascript
Vue 源码分析之 Observer实现过程
2018/03/29 Javascript
原生JS检测CSS3动画是否结束的方法详解
2019/01/27 Javascript
微信小程序实现单列下拉菜单效果
2019/04/25 Javascript
js 实现watch监听数据变化的代码
2019/10/13 Javascript
[04:02]2014DOTA2国际邀请赛 BBC每日综述中国战队将再度登顶
2014/07/21 DOTA
python下paramiko模块实现ssh连接登录Linux服务器
2015/06/03 Python
python如何实现int函数的方法示例
2018/02/19 Python
PyQt5每天必学之带有标签的复选框
2018/04/19 Python
Python list列表中删除多个重复元素操作示例
2019/02/27 Python
Python Numpy库datetime类型的处理详解
2019/07/13 Python
python matplotlib饼状图参数及用法解析
2019/11/04 Python
浅谈python的elementtree模块处理中文注意事项
2020/03/06 Python
Matplotlib 绘制饼图解决文字重叠的方法
2020/07/24 Python
linux mint中搜狗输入法导致pycharm卡死的问题
2020/10/28 Python
彻底解决pip下载pytorch慢的问题方法
2021/03/01 Python
使用canvas实现黑客帝国数字雨效果
2020/01/02 HTML / CSS
食品安全检查制度
2014/02/03 职场文书
解除合同协议书
2014/04/17 职场文书
安全教育演讲稿
2014/05/09 职场文书
缓刑期间思想汇报范文
2014/10/10 职场文书