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 自定义错误处理函数trigger_error()
Mar 26 PHP
Yii Framework框架获取分类下面的所有子类方法
Jun 20 PHP
PHP获取MySql新增记录ID值的3种方法
Jun 24 PHP
php通过exif_read_data函数获取图片的exif信息
May 21 PHP
php创建桌面快捷方式实现方法
Dec 31 PHP
thinkphp项目部署到Linux服务器上报错“模板不存在”如何解决
Apr 27 PHP
深入理解php printf() 输出格式化的字符串
May 23 PHP
PHP开发APP端微信支付功能
Feb 17 PHP
php中curl和soap方式请求服务超时问题的解决
Jun 11 PHP
提高Laravel应用性能方法详解
Jun 24 PHP
Vagrant(WSL)+PHPStorm+Xdebu 断点调试环境搭建
Dec 13 PHP
PHP fopen中文文件名乱码问题解决方案
Oct 28 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的MySQL连接类
2013/06/07 PHP
php计算两个整数的最大公约数常用算法小结
2015/03/05 PHP
Smarty3配置及入门语法
2017/02/22 PHP
PHP实践教程之过滤、验证、转义与密码详解
2017/07/24 PHP
laravel实现按时间日期进行分组统计方法示例
2019/03/23 PHP
不错的新闻标题颜色效果
2006/12/10 Javascript
jquery获取URL中参数解决中文乱码问题的两种方法
2013/12/18 Javascript
jquery实现图片左右切换的方法
2015/05/07 Javascript
javascript实现dom动态创建省市纵向列表菜单的方法
2015/05/14 Javascript
JS实现动态生成表格并提交表格数据向后端
2020/11/25 Javascript
使用jQuery处理AJAX请求的基础学习教程
2016/05/10 Javascript
js动态添加的DIV中的onclick事件简单实例
2016/07/25 Javascript
AngularJS实现表单验证功能
2017/01/09 Javascript
ReactNative之键盘Keyboard的弹出与消失示例
2017/07/11 Javascript
详解Vue的computed(计算属性)使用实例之TodoList
2017/08/07 Javascript
浅谈Angular文字折叠展开组件的原理分析
2017/11/24 Javascript
vue中添加mp3音频文件的方法
2018/03/02 Javascript
JS使用正则表达式获取小括号、中括号及花括号内容的方法示例
2018/06/01 Javascript
javascript刷新父页面方法汇总详解
2019/10/10 Javascript
node+multer实现图片上传的示例代码
2020/02/18 Javascript
js实现手表表盘时钟与圆周运动
2020/09/18 Javascript
Python yield使用方法示例
2013/12/04 Python
Python编程中的文件操作攻略
2015/10/16 Python
Python批量修改文本文件内容的方法
2016/04/29 Python
Python快速排序算法实例分析
2017/11/29 Python
Python yield的用法实例分析
2020/03/06 Python
对python中arange()和linspace()的区别说明
2020/05/03 Python
浅谈Python __init__.py的作用
2020/10/28 Python
基于PyTorch中view的用法说明
2021/03/03 Python
机电职业生涯规划书范文
2014/03/08 职场文书
员工合理化建议书
2014/05/19 职场文书
简历中自我评价范文
2015/03/11 职场文书
golang slice元素去重操作
2021/04/30 Golang
教你用Python爬取英雄联盟皮肤原画
2021/06/13 Python
webpack介绍使用配置教程详解webpack介绍和使用
2022/06/25 Javascript
Win10服务主机占用内存怎么办?Win10服务主机进程占用大量内存解决方法
2022/09/23 数码科技