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
php 数组二分法查找函数代码
Feb 16 PHP
PHP print类函数使用总结
Jun 25 PHP
PHP中使用CURL伪造来路抓取页面或文件
May 04 PHP
使用php转义输出HTML到JavaScript
Mar 27 PHP
php结合curl实现多线程抓取
Jul 09 PHP
解决ThinkPHP下使用上传插件Uploadify浏览器firefox报302错误的方法
Dec 18 PHP
php中strlen和mb_strlen用法实例分析
Nov 12 PHP
PHP中实现中文字串截取无乱码的解决方法
May 29 PHP
php使用环形链表解决约瑟夫问题完整示例
Aug 07 PHP
PHP实现的操作数组类库定义与用法示例
May 24 PHP
php下的原生ajax请求用法实例分析
Feb 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
Terran兵种介绍
2020/03/14 星际争霸
整理的一些实用WordPress后台MySQL操作命令
2013/01/07 PHP
PHP把MSSQL数据导入到MYSQL的方法
2014/12/27 PHP
laravel框架模型和数据库基础操作实例详解
2020/01/25 PHP
PHP内存溢出优化代码详解
2021/02/26 PHP
一个加密JavaScript的开源工具PACKER2.0.2
2006/11/04 Javascript
javascript动态添加表格数据行(ASP后台数据库保存例子)
2010/05/08 Javascript
JavaScript截断字符串的方法
2015/07/15 Javascript
node.js抓取并分析网页内容有无特殊内容的js文件
2015/11/17 Javascript
JS实现点击表头表格自动排序(含数字、字符串、日期)
2017/01/22 Javascript
Node.js数据库操作之查询MySQL数据库(二)
2017/03/04 Javascript
浅析JS中常用类型转换及运算符表达式
2017/07/23 Javascript
vue 登录滑动验证实现代码
2018/08/24 Javascript
vue 父组件中调用子组件函数的方法
2019/06/06 Javascript
原生js+css实现tab切换功能
2020/09/17 Javascript
编写Python脚本使得web页面上的代码高亮显示
2015/04/24 Python
Python的Flask框架中使用Flask-SQLAlchemy管理数据库的教程
2016/06/14 Python
用python找出那些被“标记”的照片
2017/04/20 Python
python中的for循环
2018/09/28 Python
Python实现快速排序的方法详解
2019/10/25 Python
python绘制规则网络图形实例
2019/12/09 Python
python numpy数组复制使用实例解析
2020/01/10 Python
Python使用uuid库生成唯一标识ID
2020/02/12 Python
Python实现哲学家就餐问题实例代码
2020/11/09 Python
详解Python Celery和RabbitMQ实战教程
2021/01/20 Python
澳大利亚时尚前卫设计师珠宝在线:Amber Sceats
2017/10/04 全球购物
最新的小工具和卓越的产品设计:Oh That Tech!
2019/08/07 全球购物
请解释在new与override的区别
2012/10/29 面试题
应届生护士求职信
2013/11/01 职场文书
财务与信息服务专业推荐信
2013/11/28 职场文书
自考毕业自我鉴定
2014/03/18 职场文书
高中英语演讲稿范文
2014/04/24 职场文书
销售开票员岗位职责
2015/04/15 职场文书
Pytorch 统计模型参数量的操作 param.numel()
2021/05/13 Python
浅析CSS在DevTools 中架构演变
2021/10/05 HTML / CSS
Go本地测试解耦任务拆解及沟通详解Go本地测试的思路沟通的重要性总结
2022/06/21 Golang