PHP用substr截取字符串出现中文乱码问题用mb_substr

PHP用substr截取字符串出现中文乱码问题用mb_substr

PHP用截取字符串出现中文乱码问题用

实例:(‘截取中文乱码问题测试’,0,5, ‘utf-8’);

语法 : ( , int start

, int

$rest = (“”, 1); // “bcdef”

$rest = (“”, 1, 3); // “bcd”

如果 start是负数,传回的字符串将会从 结尾的第 start个字开始。

$rest = (“”, -1); // “f”

$rest = (“”, -2); // “ef”

$rest = (“”, -3, 1); // “d”

如果有给予参数 而且是正数时,传回的字符串将会从 start传回 个字元。

如果有给予参数 而且是负数时,传回的字符串将会结束于 结尾的第 个字元。

$rest = (“”, 1, -1); // “bcde”

对于英文没有问题,我们测试一个中文

$rest = (“中国人”, 1, -1); // “” 就是乱码了

这种截取字符的结果,肯定不是我们想要的结果,这种出现PHP 中文乱码的情况php substr 截取中文,可能会导致程序无法正常运行。

解决办法主要有两种:

一、使用扩展库的()截取就不会出现乱码了。

可以用()/()这个函数,()/()的用法与()相似,只是在()/最后要加入多一个参数,以设定字符串的编码PHP用substr截取字符串出现中文乱码问题用mb_substr,

但是一般的服务器都没打开.dll,需要在php.ini在把.dll打开。

echo (“php中文字符”,0,4,”utf-8″);

如果未指定最后一个编码参数,会是三个字节为一个中文,这就是utf-8编码的特点,若加上utf-8字符集说明php substr 截取中文,所以,是以一个字为单位来截取的。

使用的时候要注意php文件的编码,和网页显示时的编码。使用这个方法要事先知道字符串的编码,如果不知道编码,就需要判断,库还提供了来检验字符串编码,但还不完善。

PHP 自带几种字符串截取函数,其中常用到的就是 和 。前者在处理中文时,GBK 为 2 个长度单位php substr 截取中文,UTF 为 3 个长度单位,后者指定编码后,一个中文即为 1 个长度单位。

有时会截 1/3 个中文或半个中文,会显示乱码,相对来说 更适合我们使用。不过有时候 就显得不那么好用了。例如我要显示一个小图片的简要信息,5 个中文正好,超过 5 个就截取前4再加上 ”…”,这样处理中文是没问题了,可是处理英文或数字,这样截取就太短了。

二、自己书写截取函数PHP用substr截取字符串出现中文乱码问题用mb_substr,但效率不如用扩展库来得高。下面是里面的截取UTF-8编码下字符串的函数。

 1 function sub_str($str, $length = , $append = true)
 2 {
 3   $str = trim($str);
 4   $strlength = strlen($str);
 5   if ($length == || $length >= $strlength)
 6   {
 7     return $str; //截取长度等于或大于等于本字符串的长度,返回字符串本身
 8   }
 9   elseif ($length < ) //如果截取长度为负数
10   {
11     $length = $strlength + $length;//那么截取长度就等于字符串长度减去截取长度
12     if ($length < )
13     {
14       $length = $strlength;//如果截取长度的绝对值大于字符串本身长度,则截取长度取字符串本身的长度
15     }
16   }
17   if (function_exists('mb_substr'))
18   {
19     $newstr = mb_substr($str, , $length, EC_CHARSET);
20   }
21   elseif (function_exists('iconv_substr'))
22   {
23     $newstr = iconv_substr($str, , $length, EC_CHARSET);
24   }
25   else
26   {
27     //$newstr = trim_right(substr($str, , $length));
28     $newstr = substr($str, , $length);
29   }
30   if ($append && $str != $newstr)
31   {
32     $newstr .= '...';
33   }
34   return $newstr;
35 }

公告:
1. 本站所有资源来源于用户上传和网络,如有侵权请联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长处理!
6. 本站不售卖代码,资源标价只是站长收集整理的辛苦费!如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
7. 站长QQ号码 2205675299

资源库 - 资源分享下载网 » PHP用substr截取字符串出现中文乱码问题用mb_substr

常见问题FAQ

关于资源售价和售后服务的说明?
本站所有资源的标价均为本站收集资源的辛苦费,不代表资源本身的价值。软件是高智慧高价值的商品,不可能是白菜价。本站资源标价只是赞助费用,收取的赞助费仅用来维持本站的日常运营!毕竟收集整理资料需要投入云计算资源和站长大量的精力。
代码有没有售后服务和技术支持?
由于代码的运行具有不可预见性,本站不保证代码完整可运行,不提供技术支持和售后服务。 本站原创代码都是站长自己开发的,可以有偿提供技术支持服务。 网站里标明【亲测】的代码都是站长亲测过的,其他的代码由于精力有限,没有一一测试,不能保证代码就一定能够使用,更没有技术支持服务,下载前请自行斟酌。
有没有搭建服务?
由于搭建服务比较费时费力,所以本站除了原创代码外均不提供搭建服务。本站分享代码纯属兴趣爱好,不以盈利为目的,请勿咨询有没有搭建服务,谢谢理解。
链接地址失效了怎么办?
请带上资源链接地址联系客服,工作时间内我们看到后将第一时间回复。
关于解压密码
本站资源一般都没有加密,如果发现需要解压密码的,那么就输入 hao.35dc.com 试试。

发表评论

资源库,由老程序员细心甄别、精心筛选,只为提供优质的源码资源

关于我们 联系我们