PHP中文无乱码截取
正在上传文件反正无聊 就把php无乱码截取写出来吧`
参数说明
gbk 字符编码中,存储中文字符要2个字节
uft-8 字符编码中,存储中文字符要3个字节
0xa0 半个汉字
ord()— 返回字符的 ASCII 码值
chr() — 返回指定的字符
在网上我也看到一些截取中文的函数 但是我认为他们是有缺陷的 如不能区别utf-8 gbk的字符集 中文 于是我自己写了一个
但是我却发现我写的函数其实是用mb系列函数 ,我也是廋少不了
header("content-type:text/html; charset = gbk");
function chinesesubstr($str,$star,$len,$char_set='uft8'){
$tmpstr = null;
$char_set=='gbk'?$char_set=2:$char_set=3; //根据不同的字符集 来截取不同的长度
$strlen = $star+$len;
for( $i=0;$i<$strlen;$i++ ){
if(ord(substr($str,$i,1))>0xa0){
$tmpstr .= substr($str,$i,$char_set);
$i++;
}else{
$tmpstr .= substr($str,$i,1);
}
}
return $tmpstr;
}
//中文(中文特殊符号->有一些事不区分中英的#%*等):3 数字:1 字母(特殊符号):1
echo chinesesubstr('玩儿qqq额外人听闻',0,5,'gbk');
所以还是老老实实的写一个mb系列的函数吧
function chinesesubstr($str,$star=0,$len,$encoding ='utf8'){
$strlen = mb_strlen($str, $encoding);
if($strlen < $len){
return $str;
}else{
$re_turn = mb_substr($str,$star,$len,$encoding).chr(0).'...';
return $re_turn;
}
}
$str = "这个新闻或是文章的标题很长,需要只显示前面一些字,后面用...来代替";
echo chinesesubstr($str,0,5);
知识点终结
当汉字被截断时,根据编码规则他总是要把后边的其他字符拉过来一起作为汉字解释,
这就是出现乱码的原因。而值为0x81到0xff与0x00组合始终都显示为“空” 根据这一特点,
在substr的结果后面补上一个chr(0),就可以防止出现乱码了
chr(0)相关知识:
null是什么都没有,而chr(0)的值是0。表示成16进制是0x00,表示成二进制是00000000
虽然chr(0)不会显示出什么,但是他是一个字符。
PHP中文无乱码截取的更多相关文章
- PHP截取中文无乱码函数——cutstr
转载:http://blog.sina.com.cn/s/blog_694c144f010179wj.html 真正好用的PHP截取中文无乱码函数——cutstr (2012-07-09 11:17: ...
- php实现中文字符串无乱码截取
在PHP开发中会经常用到字符串截取,有的时候字符串截取会出现乱码的情况,那么怎么解决这个问题呢,其实也很容易 首先我们要了解关于中英文占多少字节的问题. ASCII码:一个中文汉字占两个字节的空间. ...
- php字符串无乱码截取函数封装
/** * * 中英混合字符串长度判断 * @param unknown_type $str * @param unknown_type $charset */ function strLength( ...
- php截取中文无乱码
在PHP中需要对字符串进行截取,如果没有装mb扩展(mb_substr函数),对中文截取就需要进行相应的处理.下面是对字符串 "世s界s的功s\\\夫萨的mn是非得失sdf dsf dsf ...
- ANSI转UTF-8中文无乱码解决方案
近期做的项目需要使用Doxygen生成文档,由于前期代码不是本人完成,他使用的是ANSI格式的文件,后来我用Notepad++写其他文件时,默认保存为UTF-8 无BOM编码格式,因此整个项目文件中既 ...
- 如何让win2008服务器显示中文无乱码
使用Windows Server 2008 R2 IIS搭建FTP服务器时,客户端登录FTP后中文文件夹显示为乱码,应在“控制面板”-“区域和语言”中查看“当前系统区域设置”的情况. 应确保“非Uni ...
- php中文截取无乱码方法
直接使用PHP函数substr截取中文字符可能会出现乱码,主要是substr可能硬生生的将一个中文字符“锯”成两半.解决办法: 1.使用mbstring扩展库的mb_substr截取就不会出现乱码了. ...
- PHP实现中文截取无乱码
字符串的处理是编程中比较常见的,各种编程语言对字符串的处理也提供了大量函数,像php中mb_substr()函数可以实现对中文字符串的截取,如何使用自定义方法实现中文字符串截取无乱码这也是面试经常遇到 ...
- PHP实现中文字符串截取无乱码
在我们学习PHP知识的过程中,PHP截取字符串应该是一个非常常见的字符串基础操作了,想必大家都比较熟悉这方面知识点. 但是有些新手朋友们可能遇到过,当截取中英文字符串时出现乱码的情况,其实这个也是非常 ...
随机推荐
- imp需要
导入全部: imp user/password@10.10.10.10:1521/orcl file = C:\Users\Administrator\Desktop\20170404230000.d ...
- 自定义缓存管理器 或者 Spring -- cache
Spring Cache 缓存是实际工作中非常常用的一种提高性能的方法, 我们会在许多场景下来使用缓存. 本文通过一个简单的例子进行展开,通过对比我们原来的自定义缓存和 spring 的基于注释的 c ...
- Linux命令 uname
1.简介 管理系统而使用的命令,用于显示系统信息(不同linux版本可能有写差异) 2.语法 uname [-amnrsv] (1) -a,--all 显示所有的信息 (2) -s,--kernel- ...
- VTemplate模板引擎的使用--进阶篇
1.<vt:template>与<vt:include>标签的不同 <vt:template>和<vt:include> 标签都包含file属性,如果这 ...
- SQL 测验题目(30道)
1.SQL 指的是? 您的回答:Structured Query Language 2.哪个 SQL 语句用于从数据库中提取数据? 您的回答:SELECT 3.哪条 SQL 语句用于更新数据库中的数据 ...
- dir(dict)|字典的创建-添加-删除-修改-判断存在-取值等相关操作
dir(dict) ####字典操作:创建-添加-删除-修改-判断存在-取值 #(一)创建字典: {} .等号. zip(). [(),()] #1.创建空字典 dict0 = {} #2.等号创建 ...
- Python 文件及文件夹处理
import os,shutil def getfilelist(filepath): filelist = os.listdir(filepath) # 获取filepath文件夹下的所有的文件 # ...
- java部署系列:CentOS下部署Java7/Java8
一.前言 1.本文主要内容 CentOS下部署OracleJDK CentOS下部署OpenJDK 2.适用范围与本篇环境 适用范围 1.CentOS 6+2.Java 7+ 本篇环境 1.CentO ...
- elasticsearch-6.0.1安装
elasticsearch-6.0.1安装 0. 介绍: ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎:是目前全文搜索引擎的首选. ...
- 16-python基础-字典
1.字典的定义 dictionary(字典)是除列表以外python之中最灵活的数据类型. 字典同样可以存储多个数据. 通常用于存储一个物体的相关信息. 和列表的区别 列表是有序的对象集合 字典是无序 ...