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 巧用数组降低程序的时间复杂度
Jan 01 PHP
php curl常见错误:SSL错误、bool(false)
Dec 28 PHP
关于IIS php调用com组件的权限问题
Jan 11 PHP
PHP按行读取、处理较大CSV文件的代码实例
Apr 09 PHP
Yii框架登录流程分析
Dec 03 PHP
php使用NumberFormatter格式化货币的方法
Mar 21 PHP
PHP7正式版测试,性能惊艳!
Dec 08 PHP
PHP7之Mongodb API使用详解
Dec 26 PHP
PHP6新特性分析
Mar 03 PHP
PHP正则获取页面所有图片地址
Mar 23 PHP
Laravel中七个非常有用但很少人知道的Carbon方法
Sep 21 PHP
php如何实现数据库的备份和恢复
Nov 30 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
来自phpguru得Php Cache类源码
2010/04/15 PHP
PHP缩略图等比例无损压缩,可填充空白区域补充色
2011/06/10 PHP
PHP抓取、分析国内视频网站的视频信息工具类
2014/04/02 PHP
jQuery学习总结之元素的相对定位和选择器(持续更新)
2011/04/26 Javascript
js Html结构转字符串形式显示代码
2011/11/15 Javascript
密码强度检测效果实现原理与代码
2013/01/04 Javascript
chrome下img加载对height()的影响示例探讨
2014/05/26 Javascript
JavaScript中获取高度和宽度函数总结
2014/10/08 Javascript
返回顶部按钮响应滚动且动态显示与隐藏
2014/10/14 Javascript
layer实现弹窗提交信息
2016/12/12 Javascript
Javascript中document.referrer隐藏来源的方法
2017/01/16 Javascript
浅析javaScript中的浅拷贝和深拷贝
2017/02/15 Javascript
jQuery实现在HTML文档加载完毕后自动执行某个事件的方法
2017/05/08 jQuery
Grunt针对静态文件的压缩,版本控制打包的实例讲解
2017/09/29 Javascript
vue-cli项目使用mock数据的方法(借助express)
2019/04/15 Javascript
JavaScript判断浏览器运行环境的详细方法
2019/06/30 Javascript
学习LayUI时自研的表单参数校验框架案例分析
2019/07/29 Javascript
vue更改数组中的值实例代码详解
2020/02/07 Javascript
利用Python实现Windows下的鼠标键盘模拟的实例代码
2017/07/13 Python
Python Tkinter实现简易计算器功能
2018/01/30 Python
使用pygame模块编写贪吃蛇的实例讲解
2018/02/05 Python
python使用Thread的setDaemon启动后台线程教程
2020/04/25 Python
Python selenium爬取微博数据代码实例
2020/05/22 Python
tensorflow模型转ncnn的操作方式
2020/05/25 Python
在Tensorflow中实现leakyRelu操作详解(高效)
2020/06/30 Python
python连接mongodb数据库操作数据示例
2020/11/30 Python
Python 无限级分类树状结构生成算法的实现
2021/01/21 Python
CSS3圆角边框和边界图片效果实例
2016/07/01 HTML / CSS
Nike荷兰官方网站:Nike.com (NL)
2018/04/19 全球购物
宿舍卫生检讨书
2014/01/16 职场文书
2014年手术室工作总结
2014/11/26 职场文书
《和时间赛跑》读后感3篇
2019/12/16 职场文书
2019关于垃圾分类处理的调查报告
2019/12/26 职场文书
解决mysql:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO/YES)
2021/06/26 MySQL
css中z-index: 0和z-index: auto的区别
2021/08/23 HTML / CSS
Win11安全功能升级:内置防网络钓鱼功能
2022/04/08 数码科技