>php教程 >php手册 >mb_substr

mb_substr

WBOY
WBOY원래의
2016-06-13 09:52:371110검색



问题
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返回的是字符数,设定的是字符数而且不是字节数.

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

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.