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 相关文章推荐
自动把纯文本转换成Web页面的php代码
Aug 27 PHP
PHP函数之error_reporting(E_ALL ^ E_NOTICE)详细说明
Jul 01 PHP
浅析PHP页面局部刷新功能的实现小结
Jun 21 PHP
php分页函数示例代码分享
Feb 24 PHP
PHP数据库操作之基于Mysqli的数据库操作类库
Apr 19 PHP
PHP中的魔术方法总结和使用实例
May 11 PHP
php防止用户重复提交表单
Nov 02 PHP
浅析PHP中call user func()函数及如何使用call user func调用自定义函数
Nov 05 PHP
php实现的SSO单点登录系统接入功能示例分析
Oct 12 PHP
PHP 500报错的快速解决方法
Dec 14 PHP
Yii2 中实现单点登录的方法
Mar 09 PHP
PHP获取php,mysql,apche的版本信息及更多服务器信息
Mar 09 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
神族 PROTOSS 概述
2020/03/14 星际争霸
php遍历文件夹和文件列表示例分享
2014/03/11 PHP
PHP中exec与system用法区别分析
2014/09/22 PHP
通过Email发送PHP错误的方法
2015/07/20 PHP
php抓取网站图片并保存的实现方法
2015/10/29 PHP
ThinkPHP实现简单登陆功能
2017/04/28 PHP
javascript multibox 全选
2009/03/22 Javascript
JQuery一种取同级值的方式(比如你在GridView中)
2012/03/15 Javascript
js中apply方法的使用详细解析
2013/11/04 Javascript
JS实现的Select三级下拉菜单代码
2015/08/20 Javascript
node模块机制与异步处理详解
2016/03/13 Javascript
Auto.js自动收取自己和好友蚂蚁森林能量脚本
2018/06/28 Javascript
mpvue 单文件页面配置详解
2018/12/02 Javascript
微信小程序基于canvas渐变实现的彩虹效果示例
2019/05/03 Javascript
Vue动态创建注册component的实例代码
2019/06/14 Javascript
npm的lock机制解析
2019/06/20 Javascript
element实现合并单元格通用方法
2019/11/13 Javascript
[01:36:17]DOTA2-DPC中国联赛 正赛 Ehome vs iG BO3 第一场 1月31日
2021/03/11 DOTA
Python中MySQL数据迁移到MongoDB脚本的方法
2016/04/28 Python
python操作oracle的完整教程分享
2018/01/30 Python
Python回文字符串及回文数字判定功能示例
2018/03/20 Python
python里 super类的工作原理详解
2019/06/19 Python
Laravel框架表单验证格式化输出的方法
2019/09/25 Python
PYTHON如何读取和写入EXCEL里面的数据
2019/10/28 Python
keras中的History对象用法
2020/06/19 Python
浅谈TensorFlow之稀疏张量表示
2020/06/30 Python
使用python求斐波那契数列中第n个数的值示例代码
2020/07/26 Python
提高python代码运行效率的一些建议
2020/09/29 Python
python反编译教程之2048小游戏实例
2021/03/03 Python
维珍澳洲航空官网:Virgin Australia
2017/09/08 全球购物
小学数学教学反思
2014/02/02 职场文书
文字自荐书范文
2014/02/10 职场文书
公司委托书格式
2014/08/01 职场文书
重阳节活动总结
2014/08/27 职场文书
2015中秋节慰问信范文
2015/03/23 职场文书
《女娲补天》读后感5篇
2019/12/31 职场文书