字符串函数

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
提问者 qq_夏天凉了海淡了霞_0 2017-05-18 13:47:08

http://img1.sycdn.imooc.com/climg//591d352a00014b7406850140.jpg
结果是12,跟strlen()的结果是一样的

  • guly #1
    你好,根据你贴出代码运行mb_strlen($str)为4,在strlen计算时,对待一个UTF8的中文字符是3个长度,在mb_strlen计算时,选定内码为UTF8,则会将一个中文字符当作长度1来计算,如果解决您的问题请采纳,祝学习愉快!
    2017-05-18 22:07:54
  • 提问者 qq_夏天凉了海淡了霞_0 回复 guly #2
    我这边电脑上运行出来的都是12
    2017-05-19 08:45:49
imooc_澈 2017-05-18 11:26:58

您好,在UTF-8编码下,strlen()则会将一个中文字符当作长度3来计算,导致字符串长度计算不准确,而mb_strlen()函数可以解决这个问题,它会把一个中文字符的长度一样计算成1。例如:$str = "我是c中文字符",mb_strlen($str)的长度计算结果为7,而strlen($str)的计算结果就为19。

如果解决了您的问题,请采纳,祝您学习愉快~

  • 老师我运行的你这个例子为什么mb_strlen($str)字符串长度还是19?
    2017-11-01 11:37:20
  • 你好,mb_strlen函数有两个参数,一个是要计算长度的字符串,一个是字符编码,如果只给了一个参数,如mb_strlen($str),那这个函数就是按照内部编码来计算字符串长度的,为了准确计算出带中文字符串的长度,可以使用mb_strlen($str,'UTF-8');你得到19应该是内部编码不是UTF-8,可以使用mb_internal_encoding()获取你的内部编码查看,同时这个函数也可以设置内部编码。
    2017-11-01 14:04:05
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师