欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

mb_substr

程序员文章站 2024-02-03 17:48:18
...
问题
mb_substr
解决方法
$string = "*";

$mystring=mb_substr($string,0,6,'UTF-8');

echo $mystring;


复制代码在书上看到:UTF-8编码下面,一个中文汉字占用3个字节;GB2312/GBK编码下面一个汉字占用2个字节

那上面代码是不是就应该输出“中华”二字呢?


参考答案
输出“中环人民共和”
参考答案
那个6是字符数,不是字节数.
请仔细看手册-.-
参考答案
'UTF-8' 把这个去掉看看...
参考答案
原帖由 于安 于 2008-11-7 13:28 发表 [url=http://bbs.111cn.cn/redirect.php?goto=findpost&pid=698924&ptid=89149]链接标记[img]http://bbs.111cn.cn/images/common/back.gif[/img][/url]
'UTF-8' 把这个去掉看看...
不传入encoding参数的话,
我记得是默认使用ini下的 mbstring.internal_encoding
如果mbstring.internal_encoding未设置,应该就是用Latin-1(iso-8859-1)
参考答案
原帖由 于安 于 2008-11-7 13:28 发表 [url=http://www.111cn.cn/bbs/redirect.php?goto=findpost&pid=698924&ptid=89149]链接标记[img]http://www.111cn.cn/bbs/images/common/back.gif[/img][/url]
'UTF-8' 把这个去掉看看...
这样的话是一个中文字占用两个字节
如:echo $mystring=mb_substr($string,0,4);//结果:中华
echo $mystring=mb_substr($string,0,3 or 5);//结果:中华
参考答案
原帖由 于安 于 2008-11-7 13:28 发表 [url=http://www.111cn.cn/bbs/redirect.php?goto=findpost&pid=698924&ptid=89149]链接标记[img]http://www.111cn.cn/bbs/images/common/back.gif[/img][/url]
'UTF-8' 把这个去掉看看...
对不起,我的错,我页面是GB2312的- -

页面改成UTF8后,把'UTF-8'去掉就是一个汉字三个字节。谢谢大家的帮忙
参考答案
原帖由 男人 于 2008-11-7 16:31 发表 [url=http://bbs.111cn.cn/redirect.php?goto=findpost&pid=699902&ptid=89149]链接标记[img]http://bbs.111cn.cn/images/common/back.gif[/img][/url]
对不起,我的错,我页面是GB2312的- -
页面改成UTF8后,把'UTF-8'去掉就是一个汉字三个字节。谢谢大家的帮忙
一个字符集可以向下包含字节数的字符,
例如gbk可以包含双字节字符和单字节字符.
utf8可以包含6,5,4,3,2,1(旧的是4,3,2,1)字节的字符.
因为不能确定一个字串中包含多字节还是单字节字符.

GBK环境: $string = "测ab试cd字0串";

$mystring=mb_substr($string,0,3,'GBK');

echo $mystring;


复制代码这个3返回的是字符数,设定的是字符数而且不是字节数.

唉~,说什么好呢,看你发了这么多关于多字节字符编码的帖,
到头来,还是没明白字符和字节还有字符编码的关系-.-

[ ]
参考答案
崩溃 -。 -
参考答案
谢谢, 豁然开朗……