如何使用substr()截取字符串在PHP出现在中国的障碍

如何使用substr()截取字符串在PHP出现在中国的障碍
在PHP程序开发,字符串截取操作经常进行的,例如,当输出信息列表不是很长,当印刷的文章摘要,一系列字符串截取操作必须被执行。我们满足这些要求时,我们通常认为使用substr()方法,和substr()更适合拦截所有的英文字符串。

但只要有中文字符的字符串,它可能导致PHP截取中文乱码,因为中文UTF-8编码,每个汉字是3个字节,和GB2312占2个字节,英文占1个字节,截取的数字是不准确的,(在)突然在汉字锯成两半,造成断开后的字符。拉过来一起做的话,那么PHP截取中文乱码。

——得到一些字符串函数

语法:截取字符串(字符串,起始{,int length })

解释:

substr()返回字符串的字符串的一部分,由参数指定开始和长度。

如果start是正数,返回的字符串将以字符串的开始字符开头。

例子:
< PHP
$休息= substr(ABCDEF,1); / /收益可分为
休息= substr(美元ABCDEF
>

如果起始为负,返回的字符串将从字符串结尾处的开始单词开始。
例子:
< PHP
$休息= substr(ABCDEF,1); / /返回F
$休息= substr(ABCDEF,2); / /返回EF
休息= substr(美元ABCDEF
>
如果给定参数长度并给出正数,返回的字符串将从开始返回长度字符。

如果有一个给定的参数长度和一个负数,返回的字符串将结束字符串结尾处的长度字符。

例子:
< PHP
休息= substr(美元ABCDEF
>
英语没有问题,我们考汉语。

< PHP
休息= substr(美元中国
>
这个截取字符的结果肯定不是我们想要的结果。PHP截取中文出现乱码可能使程序正常运行。目前主要有两种解决方案:

首先,该mb_substr()的mbstring扩展库拦截不会出现。

你可以使用mb_substr( / mb_strcut)(mb_substr)( / mb_strcut)这个函数,函数的使用()和()(mb_substr)相似的是,在最后的 / mb_strcut加入一个参数来设置字符串的编码,但一般不需要在php.ini中打开php_mbstring.dll服务器,在开放的php_mbstring.dll。
< PHP
回声mb_substr(PHP汉字编码
>
如果没有指定最后的编码参数,它将在一个中国是三个字节,这是UTF-8编码的特点。如果我们把UTF-8字符集,我们将拦截一句话。

使用时,你应该注意到PHP文件和编码的编码当网页显示。使用此mb_substr方法,我们需要知道编码的字符串之前。如果我们不知道编码,我们需要作出判断。的mbstring库还提供了mb_check_encoding检查字符串的编码,但它是不完美的。

PHP需要几个字符串截取函数,这是常用的函数和mb_substr.when前处理在中国,GBK是2个单位的长度,和utf 3长度单位。后者编码后,一个中文长度为1个单位。
有时削减1 / 3在中国或半个中国,并显示乱码,和mb_substr更适合我们使用。但有时mb_substr似乎不太好。比如,我想显示一个小图片的简要信息,5中国人,超过5的前4在拦截加…以这种方式对待中国是没有问题的,但是它太短暂,处理英文或数字。

二,写自己的拦截功能,但效率不高的mbstring扩展库。以下是在ECSHOP,截取字符串的UTF-8编码的作用下。
功能sub_str($str,长度=美元美元,附加= true)
{
美元=修剪($ STR);
strlength美元= strlen(str);
如果(合长度= = $长度| | > = $ strlength)
{
返回长度等于或大于字符串长度,返回字符串本身。
}
($长度)/ /如果截取长度为负
{
美元美元美元strlength +长度= / /所以长度;长度等于字符串的长度减去截距长度
如果(长度<)
{
长度=美元美元strlength; / /如果绝对值大于字符串本身的长度截取长度,截取长度的字符串本身
}
}
如果(function_exists('mb_substr '))
{
纽世达美元= mb_substr($str,$的长度,ec_charset);
}
(function_exists('iconv_substr '))
{
纽世达美元= iconv_substr($str,$的长度,ec_charset);
}
其他的
{
/ / $纽世达= trim_right(substr($str,$长度));
纽世达substr($str =美元,美元的长度);
}
如果(追加$ STR)!= $纽世达)
{
$纽世达=..;
}
返回纽世达;
}
好了,整个故事都到目前为止,我相信它会给你带来一个收获。上面的代码也很简单。有些事我不懂。请给我留言,我会在第一时间给你答复的。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部