PHP搜索utf和gbk,php中判断是gbk还是utf
// 返回: true - 含GB编码 false - 为UTF-8编码
function is_gb2312($str)
{
for($i=0; $i
$v = ord( $str[$i] );
if( $v > 127) {
if( ($v >= 228) && ($v <= 233) )
{
if( ($i+2) >= (strlen($str) - 1)) return true; // not enough characters
$v1 = ord( $str[$i+1] );
$v2 = ord( $str[$i+2] );
if( ($v1 >= 128) && ($v1 <=191) && ($v2 >=128) && ($v2 <= 191) ) // utf编码
return false;
else
return true;
}
}
}
return true;
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------
判断中文和编码有关 gbk是双字节,utf8是三字节,可以根据 中文的范围来判断
编码范围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);
二、代码例子
1. //判断内容里有没有中文 -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
$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
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
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搜索utf和gbk,php中判断是gbk还是utf相关推荐
- php保存gbk字符串,php判断字符串gbk/utf8编码和转换
代码就点击进来看吧.前段时间聊天的时候卜卜口提到可以由程序提取歌曲文件的ID3信息,这样就免去那些音乐上传时候用户填写表单的步骤.仔细想想这么利国利民的东西必需试试!首先考虑到的就是编码的判断,在网上 ...
- java中判断字符串乱码_java中如何判断字符串是否乱码
java中如何判断字符串是否乱码 发布时间:2020-06-18 13:43:41 来源:亿速云 阅读:113 作者:鸽子 项目中有一个功能 在IE中GET方式提交会产生乱码 但有两个入口都会走这同一 ...
- python语句结束符_python中判断文件结束符的具体方法
python中判断文件结束符的方法:可以使用try except语句块来进行判断. 具体使用方法:[try:while True:s = input() except EOFError: pass]. ...
- python判断linux中文件是否存在_linux shell 中判断文件、目录是否存在的方法
本文主要介绍了linux shell 中判断文件.目录是否存在的方法,分享给大家 -e filename 如果 filename存在,则为真 -d filename 如果 filename为目录,则为 ...
- php if为空那么,PHP中判断数组是否为空的方法
PHP中判断数组为空的方法有好几种,但当遇到判断多维数组时,这些方法都无法判别数组是否为空,现在下面先介绍从网上搜索到判断一维数组的方法. PHP判断数组为空之一.for循环 最简单也是最直接的方法, ...
- 搜索和遍历在图中有何区别和联系?
我们都知道有深度/广度优先搜索 和 深度/广度优先遍历,而且都称其为DFS和BFS, 那么他们在图的算法中有什么区别呢?如果没区别那肯定不会是不同的部分吧~ 这篇文章就给出我的一些理解 问题的提出 今 ...
- linux判断目录是否存在命令,linux shell 中判断文件、目录是否存在的方法
本文主要介绍了linux shell 中判断文件.目录是否存在的方法,分享给大家 -e filename 如果 filename存在,则为真 -d filename 如果 filename为目录,则为 ...
- 图谱实战 | 知识图谱在美团搜索酒旅场景认知中的应用
分享嘉宾:陈骐 美团 高级算法专家 编辑整理:毛佳豪 中国平安浙江分公司(实习) 出品平台:DataFunTalk 导读:知识图谱凭借能够以图模型描述知识和世界万物关联关系的特性,在各行业领域大放异彩 ...
- java 中判断字符是否为big5码_【转载】判断一个字符是西文字符还是中文字符
转载:http://blog.chinaunix.net/u2/70445/showart_1133335.html 一.判断一个字符是西文字符还是中文字符 大家知道西文字符主要是指ASCII码 ...
最新文章
- hadoop完全分布式集群安装
- mysql jdbc路径,mysql转存数据库后,如何修改jdbc:mysql的路径
- 虚拟化技术知识点初步梳理
- 安卓--L2T虚拟连接
- 两年了,你还是那个你 | 今日最佳
- [JavaWeb-Tomcat]web服务器软件_Tomcat介绍
- 数据源管理 | 主从库动态路由,AOP模式读写分离
- Honey Dance I believe
- 8-5安装redis-sentinel
- 《创意特训营——30天超级灵感唤醒术》—第1章1.6节小结
- android5.0+art模式,Android 5.0有哪些变化
- 第三季-第24课-TCP通讯程序设计
- java毕业设计——基于java+JavaBean+jsp的网上零食销售系统设计与实现(毕业论文+程序源码)——网上零食销售系统
- 通过Cadence学拉扎维的第2天-mos的IV曲线、体效应
- OpenGL ES glew 下载和使用
- 联想rd650怎么装系统win7_联想启天M4650台式机win10怎么改win7
- ubuntu18.04 虚拟机重启后变成只读模式,怎么恢复?
- Postman中文文档——安装与更新
- 揭秘封包辅助外G:封包外G初体验(四)
- 【精品,面试之前必读】【转贴】安氏大俗商业学(2005-8-28)