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系统流量分析的程序
Oct 09 PHP
PHP strstr 函数判断字符串是否否存在的实例代码
Sep 28 PHP
调整PHP的性能
Oct 30 PHP
合并ThinkPHP配置文件以消除代码冗余的实现方法
Jul 22 PHP
PHP中构造函数和析构函数解析
Oct 10 PHP
PHP数据库连接mysql与mysqli对比分析
Jan 04 PHP
thinkPHP删除前弹出确认框的简单实现方法
May 16 PHP
Yii实现Command任务处理的方法详解
Jul 14 PHP
详解php 使用Callable Closure强制指定回调类型
Oct 26 PHP
基于php双引号中访问数组元素报错的解决方法
Feb 01 PHP
PHP 进程池与轮询调度算法实现多任务的示例代码
Nov 26 PHP
PHP程序守护进程化实现方法详解
Jul 16 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
虫族 Zerg 热键控制
2020/03/14 星际争霸
php数组函数序列之array_unique() - 去除数组中重复的元素值
2011/10/29 PHP
搭建自己的PHP MVC框架详解
2017/08/16 PHP
tp5 实现列表数据根据状态排序
2019/10/18 PHP
关于laravel-admin ueditor 集成并解决刷新的问题
2019/10/21 PHP
BOM与DOM的区别分析
2010/10/26 Javascript
ext中store.load跟store.reload的区别示例介绍
2014/06/17 Javascript
javascript中的__defineGetter__和__defineSetter__介绍
2014/08/15 Javascript
高性能JavaScript DOM编程(1)
2015/08/11 Javascript
JavaScript必知必会(三) String .的方法来自何方
2016/06/08 Javascript
AngularJS表格详解及示例代码
2016/08/17 Javascript
Mongoose学习全面理解(推荐)
2017/01/21 Javascript
JS实现两周内自动登录功能
2017/03/23 Javascript
Vue.js用法详解
2017/11/13 Javascript
webpack-url-loader 解决项目中图片打包路径问题
2019/02/15 Javascript
Electron 调用命令行(cmd)
2019/09/23 Javascript
在微信小程序中使用mqtt服务的方法
2019/12/13 Javascript
Websocket 向指定用户发消息的方法
2020/01/09 Javascript
javascript实现的图片预览和上传功能示例【兼容IE 9】
2020/05/01 Javascript
EXTJS7实现点击拖拉选择文本
2020/12/17 Javascript
[02:12]打造更好的电竞完美世界:完美盛典回顾篇
2018/12/19 DOTA
在Django中管理Users和Permissions以及Groups的方法
2015/07/23 Python
python开发之基于thread线程搜索本地文件的方法
2015/11/11 Python
python从入门到精通(DAY 2)
2015/12/20 Python
Python编程实现生成特定范围内不重复多个随机数的2种方法
2017/04/14 Python
Python3监控windows,linux系统的CPU、硬盘、内存使用率和各个端口的开启情况详细代码实例
2020/03/18 Python
python字典与json转换的方法总结
2020/12/28 Python
Python基于opencv的简单图像轮廓形状识别(全网最简单最少代码)
2021/01/28 Python
澳大利亚领先的睡衣品牌:Peter Alexander
2016/08/16 全球购物
YSL圣罗兰美妆官方旗舰店:购买YSL口红
2018/04/16 全球购物
英国网上电器商店:Electricshop
2020/03/15 全球购物
会计助理的岗位职责
2013/11/29 职场文书
财务工作检讨书
2014/10/29 职场文书
少先队中队工作总结2015
2015/07/23 职场文书
给校长的建议书作文400字
2015/09/14 职场文书
八年级作文之感悟亲情
2019/11/20 职场文书