在php中使用substr函数进行中文字符串截取时,有可能会产生乱码,因为中文的两种常用编码格式中:UTF-8编码,每个汉字占3字节,而GB2312编码中,每个汉字占2字节,英文占1字节,这就导致很多时候substr()硬生生地将一个中文字符“锯”成两半,造成断开的字符会把其后的..拉过来一起做一个字,所以出现了php substr中文乱码。

解决方法一:使用mb_substr函数。

mb_substr (PHP 4 >= 4.0.6, PHP 5, PHP 7) — 获取部分字符串

string mb_substr ( string $str , int $start [, int $length = NULL [, string $encoding = mb_internal_encoding() ]] )

根据字符数执行一个多字节安全的 substr() 操作。 位置是从 str 的开始位置进行计数。 第一个字符的位置是 0。第二个字符的位置是 1,以此类推。

解决方法二:编写自定义函数。

function sub_str($str, $length = , $append = true)

{

$str = trim($str);

$strlength = strlen($str);

if ($length == || $length >= $strlength)

{

return $str; //截取长度等于或大于等于本字符串的长度,返回字符串本身

}

elseif ($length < ) //如果截取长度为负数

{

$length = $strlength + $length;//那么截取长度就等于字符串长度减去截取长度

if ($length < )

{

$length = $strlength;//如果截取长度的绝对值大于字符串本身长度,则截取长度取字符串本身的长度

}

}

if (function_exists('mb_substr'))

{

$newstr = mb_substr($str, , $length, EC_CHARSET);

}

elseif (function_exists('iconv_substr'))

{

$newstr = iconv_substr($str, , $length, EC_CHARSET);

}

else

{

//$newstr = trim_right(substr($str, , $length));

$newstr = substr($str, , $length);

}

if ($append && $str != $newstr)

{

$newstr .= '...';

}

return $newstr;

}

php substr 中文_php substr中文截取乱码解决办法相关推荐

  1. php7 中文乱码_PHP 中文乱码解决办法总结分析

    PHP 中文乱码解决办法总结分析 更新时间:2009年07月30日 01:19:43   作者: 总之一句话,要解决PHP中文乱码最好最快的解决办法就是,页面申明的编码与数据库内部编码一致,如果页面申 ...

  2. pycharm 运行控制台中文乱码解决办法

    pycharm 运行控制台中文乱码解决办法

  3. navicat for mysql 显示中文乱码解决办法

    navicat for mysql 显示中文乱码解决办法   最近遇到一个问题,用navicat for mysql 打开数据库时全都显示的是乱码(在用程序代码插入数据之前确保字符不是乱码),遇到问题 ...

  4. SSH,telnet终端中文显示乱码解决办法

    SSH,telnet终端中文显示乱码解决办法 vi /etc/sysconfig/i18n 将内容改为 LANG="zh_CN.GB18030" LANGUAGE="zh ...

  5. NetBeans中文乱码解决办法

    首先来看看网上的一篇文章:http://it.dengchao.org/neatbeans-problem-fedora/linux/ 在Windows和Linux(Fedora/Ubuntu/Red ...

  6. windows下git bash中文乱码解决办法

    一.解决办法1:(直接上图) 1.在git bash下,右键 出现下图,选择options: 2.选择"Text" 3.将"Character set"设置为 ...

  7. java控制台打印输出 中文乱码 解决办法

    java控制台打印输出 中文乱码 解决办法 问题:IDEA控制台打印时出现中文乱码 原因:java资源的编码和ideal的不一致 解决办法: 第一步 1:打开intelliidea安装路径,Intel ...

  8. NotePad 打开文件 出现中文汉字乱码 解决办法

    NotePad 打开文件 出现中文汉字乱码 解决办法 欢迎关注:程序员财富自由之路 现象: 出现中文汉字乱码: 解决办法: 先别着急用notepad修改编码 1. 用windows系统自带记事本打开, ...

  9. Web前端——VScode打开html文件中文乱码解决办法

    VScode打开html文件中文乱码解决办法 1.打开VScode后,依次点击 文件 >> 首选项 >> 设置 2.打开设置后,依次点击 文本编辑器 >> 文件(或 ...

最新文章

  1. 「学习笔记-Linux」学习Shell Script
  2. 7.git提交的前进与后退
  3. DRCNN超分辨重建2016年
  4. 【NLP】270篇ACL 2019代码开源的论文,全在这里了!
  5. Netty(二)——TCP粘包/拆包
  6. Week1 Team Homework #2 Introduction of team member with photos
  7. Linux文件与目录管理常用命令
  8. Spring-context-ConfigurationClassUtils类
  9. 如何注册MSN(Microsoft ID)
  10. 区块链 fisco bcos webase-front docker方式部署
  11. 国军标 软件测评 静态分析常见问题总结
  12. PHP绿色集成环境在云服务器上的应用,PHPWAMP在服务器上搭建网站案例
  13. 简述人工智能的发展历程图_人工智能发展简史
  14. MRI脑影像分析从哲学到技术:一文搞懂VBM预处理基本原理(全网最详细解析)
  15. Qt对象间的父子关系
  16. Linux/Ubuntu的常用文件查找命令
  17. Excel如何制作下拉列表
  18. java 文件移动_java 文件移动
  19. 【水滴石穿】ES must与should组合使用的正确方式
  20. 定时开关机实现原理-Android4.4/6.0

热门文章

  1. scala中val function
  2. ASCII二进制一键转换
  3. 数据中心机房监控室效果图
  4. python编程基础与数据分析_Python编程基础与数据分析
  5. 将ResNet分类器做成一个小网站界面
  6. A7 ~ A11处理器(iphone5s~iphoneX) 14.0 ~ 14.8.1免越狱安装Trollstore教程
  7. Flask框架学习笔记(1)
  8. Excel如何统计同一单元格内姓名个数
  9. QT学习1-下载安装HelloWorld
  10. 苹果8a1660是什么版本_苹果A1660是什么型号?