`
rexcn
  • 浏览: 87383 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

PHP substr截取中文字符出现乱码的问题解疑(转)

    博客分类:
  • php
阅读更多
  我们在使用PHP substr截取中文字符的时候,经常会出现乱码的情况,导致程序无法正常运行,这时怎么引起的呢?通过分析,我们知道,主要是substr可能硬生生的将一个中文字符“锯”成两半。解决办法:

  1、使用mbstring扩展库的mb_substr截取就不会出现乱码了。

  2、自己书写截取函数,但效率不如用mbstring扩展库来得高。

  3、如果仅是为了输出截取的串,可用如下方式实现:substr($str, 0, 30).chr(0)。

  substr()函数可以分割文字,但要分割的文字如果包括中文字符往往会遇到问题,这时可以用mb_substr()/mb_strcut这个函数,mb_substr()/mb_strcut的用法与substr()相似,只是在mb_substr()/mb_strcut最后要加入多一个参数,以设定字符串的编码,但是一般的服务器都没打开php_mbstring.dll,需要在php.ini在把php_mbstring.dll打开。

  举个PHP substr截取中文字符的例子:

  < ?php echo mb_substr('这样一来我的字符串就不会有乱码^_^', 0, 7, 'utf-8'); ?> 输出:这样一来我的字 < ?php echo mb_strcut('这样一来我的字符串就不会有乱码^_^', 0, 7, 'utf-8'); ?>

  输出:这样一

  从上面的例子可以看出,mb_substr是按字来切分字符,而mb_strcut是按字节来切分字符,但是都不会产生半个字符的现象。

  PHP substr截取中文字符无乱码的方法

  function GBsubstr($string, $start, $length) { if(strlen($string)>$length){ $str=null; $len=$start+$length; for($i=$start;$i<$len;$i++){ if(ord(substr($string,$i,1))>0xa0){ $str.=substr($string,$i,2); $i++; }else{ $str.=substr($string,$i,1); } } return $str.'...'; }else{ return $string; } }

  以上两段代码示例就是PHP substr截取中文字符时出现乱码的原因及解决办法的介绍。
分享到:
评论

相关推荐

    impala中substr()截取中文字符串乱码的问题

    impala的substr()和substring()函数是不支持中文的,创建一个udf解决impala sql中substr()函数截取中文字符串乱码的问题

    PHP中使用substr()截取字符串出现中文乱码问题该怎么办

    但字符串只要出现中文字符,就有可能导致PHP substr中文乱码,因为中文UTF-8编码,每个汉字占3字节,而GB2312占2字节,英文占1字节,截取位数不准确,substr()硬生生地将一个中文字符“锯”成两半,造成断开的字符会...

    解决php截取中文出现乱码

    php 用substr截取中文时出现乱码 ,解决办法无需重写方法,只需改变一个数字即可解决中文乱码

    php 解决substr()截取中文字符乱码问题

    在php中如果我要用substr()截取字符串全英文的没问题,如果包括有中文或英文就会悲剧了,但大家也 别切我们可以使用其它办法来解决。 php截取中文字符串出现乱码,这是最近发现的事情,先前我曾经写过一篇关于自动...

    PHP substr 截取字符串出现乱码问题解决方法[utf8与gb2312]

    在PHP中,使substr函数截取字符串末位会出现乱码,因为中文UTF-8编码,每个汉字占3字节,而GB2312占2字节,英文占1字节,截取位不准确,造成断开的字符会把其后的..拉过来一起做一个字,所以出现了乱码。

    解析使用substr截取UTF-8中文字符串出现乱码的问题

    本篇文章是对使用substr截取UTF-8中文字符串出现乱码的问题进行了详细的分析介绍,需要的朋友参考下

    PHP截取汉字乱码问题解决方法mb_substr函数的应用

    利用mb_substr截取字符串不会出现乱码问题,高手可以飞过......

    php截取中文字符串不乱码的方法

     //gbk编码的字符串echo mb_substr($str, 0, 1, ‘gbk’); //输出 我 mb_substr方法比substr多一个参数,用来指定字符串编码。 utf-8编码截取示例 [code]$str = ‘我abc是谁’; //utf-8编码的字符串echo mb_substr...

    oracle截取字符(substr)检索字符位置(instr)示例介绍

    oracle 截取字符(substr),检索字符位置(instr) case when then else end语句使用 收藏 常用函数:substr和instr 1.SUBSTR(string,start_position,[length]) 求子字符串,返回字符串 解释:string 元字符串 start_...

    用SQL语句截取字符串

    用SQL语句截取字符串, string substr ( string string, int start [, int length]) 参数1:处理字符串 参数2:截取的起始位置(第一个字符是从0开始) 参数3:截取的字符数量

    php中文字符串截取方法实例总结

    用PHP函数substr截取中文字符可能会出现乱码,主要是substr可能硬生生的将一个中文字符“锯”成两半。 解决办法如下: 1、使用mbstring扩展库的mb_substr截取就不会出现乱码了。 2、自己书写截取函数,但效率不如用...

    php中文字符截取防乱码

    当汉字被截断时,根据编码规则他总是要把后边的其他字符拉过来一起作为汉字解释,这就是出现乱码的原因。而值为0x81到0xff与0x00组合始终都显示为“空” 根据这一特点,在substr的结果后面补上一个chr(0),就可以...

    PHP中实现中文字串截取无乱码的解决方法

    在PHP中,substr()函数截取带有中文字符串的话,可能会出现乱码,这是因为中西文一个字节所占有的字节数不一样,而substr的长度参数是按照字节去算的,在GB2312编码时,一个中文占2个字节,英文为1个字节,而在UTF-8...

    详解PHP用substr函数截取字符串中的某部分

    经常看到有新手问PHP有没有类似asp的left函数或right函数,实现截取某字符串左边或右边开始N个字符的函数。答案当然是有的。PHP中的substr函数就可以做的到,只不过PHP把二个函数合二为一了。 现在整理了一下substr...

    PHP按符号截取字符串的指定部分的实现方法

    字符串截取在php开发中是比较常用的; 而且对于截取的需求也有很多种; 有时我们想截取最后一个斜杠’/’后面的数字; 有时我们又需要截取第一个斜杠’/’前面的内容判断用户输入的url链接带不带http://等等; 字符...

    如何用oracle 截取两个相同字符串之间的字符

    在实际工作中经常遇到截取两个相同字符串之间的字符的oracle问题,以下是相关语句

Global site tag (gtag.js) - Google Analytics