PHP substr 截取中文乱码的问题解决办法
发布:smiling 来源: PHP粉丝网 添加日期:2013-12-07 22:58:11 浏览: 评论:0
在php中为我们提供了几个字符截取函数,包括substr,mb_substr,mb_strcut函数,我们有些php初学者会利用substr来截取中文,结果发现中文会有乱码了,出现乱码我们可以使用mb_substr来解决。
文章页面的 description 是使用 substr 函数来截取220字符的,但是最后一个汉字总是乱码,而且截取出来的长度也不正确。
通过神奇的 Google 找到方法,可能是因为 substr(string,start,length),会将汉字以字符的形式截断,而造成乱码.
解决方案:使用 PHP 扩展库中的 mb_substr 方法。
注意:1.确保你的Windows/system32下有php_mbstring.dll这个文件,没有就从你Php安装目录extensions里拷入Windows/system32里面。
2.在windows目录下找到php.ini打开编辑,搜索mbstring.dll,找到;extension=php_mbstring.dll把前面的;号去掉,这样mb_substr函数就可以生效了
方法定义:string mb_substr ( string str, int start [, int length [, string encoding]] )
注意:在使用 mb_substr()/mb_strcut 最后要加入多一个参数,以设定字符串的编码,例如:echo mb_substr(‘原本会出现乱码的汉字!’, 0, 7, ‘utf-8′);
再如如下代码:$description = mb_substr(strip_tags($post->post_content),0,220,’utf-8′);
mb_strcut函数:mb_strcut函数功能也可以截取字符串长度,下面实例具体看看区别在哪:
- <?php
- $str = '这样一来我的字符串就不会有乱码^_^';
- echo "mb_substr:" . mb_substr($str, 0, 7, 'utf-8');
- //结果:这样一来我的字
- echo "<br>";
- echo "mb_strcut:" . mb_strcut($str, 0, 6, 'utf-8');
- //结果:这样
- ?>
从上面的例子可以看出,mb_substr是按字来切分字符,而mb_strcut是按字节来切分字符,但是都不会产生半个字符的现象。
substr()函数中文版 普通的substr()函数可以取得字符串的指定长度子字符串,但遇到中文时可能会在新字符串末尾产生乱码,下面这个函数将超过$len长度的字符串转换成以“...”结尾,并且去除了乱码。
用法:$new = getsubstring($old,20);代码如下:
- function getsubstring($str,$len)
- {
- for($i = 0;$i <$len;$i++)
- {
- if ($i >=0 AND $i <$len)
- {
- if(ord(substr($str,$i,1)) > 0xa1)
- $result_str.=substr($str,$i,2);
- else
- $result_str.=substr($str,$i,1);
- }
- if(ord(substr($str,$i,1)) > 0xa1)
- $i++;
- }
- if(strlen($str)<=$len)
- return $result_str;
- else
- return $result_str."...";
- }
Tags: substr 截取 中文
相关文章
- ·php中中文截取函数mb_substr()详细(2013-11-30)
- ·php substr()函数实现过滤尾数为4号码(2013-11-30)
- ·substr(),mb_substr()及mb_strcut函数用法与区别(2014-01-17)
- ·php substr_replace替换字符串一些实例(2014-02-16)
- ·php substr_count字符出现次数统计函数(2014-05-10)
- ·php substr中文乱码解决办法(2014-08-15)
- ·PHP截断函数mb_substr()详细介绍(2014-09-14)
- ·substr() explode()函数(2014-09-19)
- ·php substr() 函数参数说明与实例教程(2014-09-20)
- ·php 字符替换函数 substr_replace 与 str_replace 用法(2015-04-10)
- ·PHP substr 返回字符串的子串的例子(2018-09-21)
- ·PHP substr()函数的用法详解(2020-02-15)
- ·php中有关字符串的4个函数substr、strrchr、strstr、ereg介绍和使用例子(2020-11-20)
- ·php截取字符串函数substr,iconv_substr,mb_substr示例以及优劣分析(2021-02-10)
- ·php mb_substr()函数截取中文字符串应用示例(2021-03-27)
- ·php中strstr、strrchr、substr、stristr四个函数的区别总结(2021-04-13)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)