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

substr --- 取得部份字符串语法 : string substr (string string, int start [, int length])

说明 :

substr( )传回 string的一部份字符串,由参数 start和 length指定。

如果 start是正数,传回的字符串将会从 string的第 start个字元开始。

Example :

$rest = substr ("abcdef", 1); // returns "bcdef"

$rest = substr ("abcdef", 1, 3); // returns "bcd"

?>

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

Example :

$rest = substr ("abcdef", -1); // returns "f"

$rest = substr ("abcdef", -2); // returns "ef"

$rest = substr ("abcdef", -3, 1); // returns "d"

?>

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

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

Example :

$rest = substr ("abcdef", 1, -1); // returns "bcde"

?>

dongyue,2005-01-07 11:10:41

substr --- 取得部份字符串

语法 : string substr (string string, int start [, int length])

说明 :

substr( )传回 string的一部份字符串,由参数 start和 length指定。

如果 start是正数,传回的字符串将会从 string的第 start个字元开始。

Example :

$rest = substr ("abcdef", 1); // returns "bcdef"

$rest = substr ("abcdef", 1, 3); // returns "bcd"

?>

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

Example :

$rest = substr ("abcdef", -1); // returns "f"

$rest = substr ("abcdef", -2); // returns "ef"

$rest = substr ("abcdef", -3, 1); // returns "d"

?>

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

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

Example :

$rest = substr ("abcdef", 1, -1); // returns "bcde"

?>

Utf-8、gb2312都支持的汉字截取函数

//截取中文字符串

/*

Utf-8、gb2312都支持的汉字截取函数

cut_str(字符串, 截取长度, 开始长度, 编码);

编码默认为 utf-8

开始长度默认为 0

*/function cut_str($string, $sublen, $start = 0, $code = 'UTF-8')

{

if($code == 'UTF-8')

{

$pa ="/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/";

preg_match_all($pa, $string, $t_string); if(count($t_string[0]) - $start > $sublen) return join('', array_slice($t_string[0], $start, $sublen));

return join('', array_slice($t_string[0], $start, $sublen));

}

else

{

$start = $start*2;

$sublen = $sublen*2;

$strlen = strlen($string);

$tmpstr = ''; for($i=0; $i

{

if($i>=$start && $i

{

if(ord(substr($string, $i, 1))>129)

{

$tmpstr.= substr($string, $i, 2);

}

else

{

$tmpstr.= substr($string, $i, 1);

}

}

if(ord(substr($string, $i, 1))>129) $i++;

}

if(strlen($tmpstr)

return $tmpstr;

}

}

$str="脚本之家一个不错的网站";

echo cut_str($str, 8, 5, 'gb2312');

php解析乱码字符串,PHP substr 截取字符串出现乱码问题解决方法[utf8与gb2312]相关推荐

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

    PHP用substr截取字符串出现中文乱码问题用mb_substr 实例:mb_substr('截取中文乱码问题测试',0,5, 'utf-8'); 语法 : string substr (strin ...

  2. ASP如何计算中英文混合字符串长度和截取字符串

    用ASP做网站的时候经常会碰到要截取字符串的情况.ASP中的Len函数不管是中文字符,还是英文字符,统统按一个单位来计算,由于一个中文字符的宽度是一个英文字符宽度的两倍,在中英文混合的情况下字符串实际 ...

  3. python string indices must be_Python解析json时提示“string indices must be integers”问题解决方法...

    本文实例讲述了Python解析json时提示"string indices must be integers"问题解决方法.分享给大家供大家参考,具体如下: import json ...

  4. utf-8编码的中文注释 在 sourceinsight 显示乱码的解决方法---utf8 转gb2312插件

    utf-8编码的中文注释 在 sourceinsight 显示乱码的解决方法---utf8 转gb2312插件 参考文章: (1)utf-8编码的中文注释 在 sourceinsight 显示乱码的解 ...

  5. vue截取一个字符串_vue如何截取字符串

    在后端有许多的封装方法来截取字符串或者对字符串的操作,同样前端也有相应的方法. 有一个data数据为ipaddr data() { return { ipaddr: "192.168.100 ...

  6. java中截取部分字符串_JAVA中截取字符串substring用法详解

    substring public String substring(int beginIndex) 返回一个新的字符串,它是此字符串的一个子字符串.该子字符串始于指定索引处的字符,一直到此字符串末尾. ...

  7. java截取倒数后六位的字符串_JAVA中截取字符串substring用法详解

    substring public String substring(int beginIndex) 返回一个新的字符串,它是此字符串的一个子字符串.该子字符串始于指定索引处的字符,一直到此字符串末尾. ...

  8. python中字符串切片取奇数_Python中的字符串切片(截取字符串)的详解

    Python中的字符串切片(截取字符串)的详解 字符串索引示意图 字符串切片也就是截取字符串,取子串 Python中字符串切片方法 字符串[开始索引:结束索引:步长] 切取字符串为开始索引到结束索引- ...

  9. iOS NSString 字符串处理:截取字符串、匹配字符串、分隔字符串

    为什么80%的码农都做不了架构师?>>>    1,截取字符串 NSString*string =@"aaabbbccc"; string = [string s ...

最新文章

  1. 关于MNIST数据集的处理
  2. !--处理:借款冲销不自动冲减预算--
  3. android R文件丢失
  4. Upma Xmac 测试 03
  5. oracle的学习笔记(转)
  6. arp linux 清空_Linux怎么清理ARP缓存
  7. Winform 下拉框绑定问题
  8. 移动硬盘上安装Windows 10系统
  9. SecureCRT资源下载安装
  10. 机房搬迁实施规划方案
  11. 现代内衣百年:性感无罪,无尺码也不是终局
  12. linux 帝国cms 刷新,帝国cms怎么自动刷新网站首页?(帝国CMS自动刷新首页的方法)...
  13. 敏感性分析—Sobol
  14. 数据科学之 如何找到指标的最 佳分裂点的几个想法
  15. matlab使用hough变换函数进行车道检测
  16. VASP计算笔记_弹性常数计算
  17. 融资150万,用户超过1500万,“护眼宝”要如何完成从工具到平台的转变?
  18. 需求分析挑战之旅(疯狂的订餐系统)(7)——变被动为主动
  19. SwiftUI教程第1章第20:加载Web图片
  20. 【SQL】SQL Server基础语法

热门文章

  1. 测试公众号修改名称_微信公众号开通个人认证,只需三步
  2. VTK修炼之道33:边缘检测_Sobel算子
  3. Ajax里的onreadystatechange的作用
  4. 高级C语言教程-存储器和指针
  5. 一文看懂NumPy的切片中常用的冒号
  6. LIVE555再学习 -- live555实现RTSP直播服务器 分析
  7. zcmu2165(分组背包)
  8. OpenCV4.0+VS2017完整安装配置过程(详细!)
  9. @RequestParam注解详解
  10. bluemix java_Bluemix 基础:将 SQL 数据库添加到您的 Java 应用程序中