在PHP中经常使用substr来进行字符串的截取,但是当我们用它来实现对中文字符进行截取的时候则会发生乱码问题,比如说:(推荐学习:PHP编程从入门到精通)<?php

$mystring="今天天气真好";

$mysubstring=substr($mystring,0,2);

echo $mysubstring;

?>

输出结果为�;

原因分析:substr函数原型为:string substr ( string $string , int $start [, int $length ] ),其中$length表示返回字节长度,而一个中文占两个字节,对于一个UTF-8的中文字符,会把它当做3个字节来处理。<?php

$length=strlen($mystring);echo $length;//输出结果为18

?>

也就是说我们可以用令$length为3,这样就会成功返回一个“今”字。这样的话如果中文和英文混杂的话则需要我们好好地计算一下$length了。

那么有更好的解决办法吗?

Php给出了另外的函数mb_strlen和mb_substr<?php

$length=mb_strlen($mystring);

$mysub=mb_substr($mystring,0,4);

echo "the length is:$length,","the substr is:$mysub";

?>

输出结果为:the length is:6,the substr is:今天天气

mb_strlen函数原型为int mb_strlen(string string_input, string encode);encode默认为UTF-8,它会将为UTF-8编码的中文字符算作一个

注意:mb_strlen与mb_substr并不是PHP的核心函数,使用前需要打开php.ini中的extension=php_mbstring.dll这一项

php 字符串 中文,php实现中文字符串截取无乱码相关推荐

  1. 实现中文字符串截取无乱码的方法

    小伙伴们大家好,使用substr()截取中文字符乱码的问题怎么解决呢? 看下面的方法: 方法一: 使用php内置函数mb_substr():      mb_substr( $str, $start, ...

  2. PHP 实现中文截取无乱码的方法

    PHP 实现中文截取无乱码的方法 需知: 中文字符在gbk编码下为2个字符,utf-8下为3个字符 中文字符的ASCII值是从0xa0后开始的 通过ord()函数可以返回字符串中第一个字符的ASCII ...

  3. php 中文截断,PHP中实现中文字串截取无乱码的解决方法

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

  4. php 中英文截取 php,PHP 中英文截取无乱码

    在学习MySql 字符集时,解决了PHP中英文截取无乱码的问题.这个方法的核心在于判断取多少个字节上. //PHP中英文截取无乱码 header('Content_type=text/php;char ...

  5. PHP实现中文字符串截取无乱码

    在我们学习PHP知识的过程中,PHP截取字符串应该是一个非常常见的字符串基础操作了,想必大家都比较熟悉这方面知识点.但是有些新手朋友们可能遇到过,当截取中英文字符串时出现乱码的情况,其实这个也是非常容 ...

  6. php 中文字符串截取无乱码,php实现中文字符串无乱码截取

    在PHP开发中会经常用到字符串截取,有的时候字符串截取会出现乱码的情况,那么怎么解决这个问题呢,其实也很容易 首先我们要了解关于中英文占多少字节的问题. ASCII码:一个中文汉字占两个字节的空间. ...

  7. php中文截取无乱码,PHP截取中文无乱码_PHP教程

    这段代码好像是thinkphp里面的 /** +-------------------- * 字符串截取,支持中文和其他编码 +-------------------- * @static * @ac ...

  8. 中文字串截取无乱码的问题

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

  9. PHP面试题:实现中文字串截取无乱码的方法

    Mb_substr();

最新文章

  1. Linux CPU数量判断命令
  2. 【面试虐菜】—— JAVA面试题(3)
  3. 计算机二级题目小汽车大客车,浙江省计算机二级办公软件Excel练习题.xls
  4. linux mono apache2,使用Apache2设置ModMono
  5. 时间胶囊——给未来的留言板
  6. python读取txt文件的前几行
  7. java弹窗_弹出窗口总结 - 王道JAVA - CSDNBlog
  8. 带你彻底弄明白!java实现平衡二叉树
  9. 亚马逊推出人工智能咨询服务,机器学习B2B业务又迈出一步
  10. 洛谷 [P1387] 最大正方形
  11. VTK学习笔记(十)基于VTK和ITK程序
  12. 2017年Q1季移动App使用情况分析
  13. Java中的String的getBytes()方法
  14. linux系统下如何github,在Linux系统下使用Github的基本教程
  15. GPS原理与接收机————全球定位系统(GPS)基础知识
  16. 对话周傲英:数据库人的切肤之痛
  17. [操作系统]进程同步 Reader-Writer问题 共享缓冲区问题 面包师问题 吸烟者问题
  18. java 基础的数组 添加
  19. 计算机操作系统学习笔记----进程管理
  20. python网络爬虫——自学笔记1.用requests库爬取图片

热门文章

  1. lisp直线连接圆象限电_圆并不难,为什么很多考生就是学不会?
  2. 怎么理解linux的平均负载及平均负载高后的排查工具
  3. 15.Three Sum
  4. 10.Java设计模式 工厂模式,单例模式
  5. 随机分配座位,共50个学生,使学号相邻的同学座位不能相邻
  6. 配置apache虚拟host
  7. setTimeOut与 setInterval区别
  8. 隐马尔科夫模型HMM自学 (2)
  9. gedit乱码 fedora
  10. UA OPTI501 电磁波 Lorentz Oscillator Model 4 Hilbet变换与Kramers-Konig关系式