一个使用良好的字符串侦听
功能:
功能的子串($str,美元美元开始,长度){ / /更好:字符串
$ = $长度;
如果(长度为< 0){
$str = strrev($str);
$ = $长度;
}
美元($ len len = < strlen(str))$ len:strlen(str);
= $ Javascript;
对于($ i = $开始;$ i $;
{
如果(ORD(substr($str,我,1))> 0xA0)
{
Javascript substr($str =美元,$我,2);
美元+;
{人}
Javascript substr($str =美元,$我,1);
}
}
如果(合长度<0美元= strrev()Javascript Javascript美元);
返回的Javascript;
}
使用
方法举例:
$ str1 =我一长串的
中文没有英文的;
$ str2 =我一长串的中文和英文;
$ len = strlen($ str1);
$;返回28
$ len = strlen($ str2);
$;返回29
回声';
回波串(str1美元,0, 11);
回声';
回波串($ str2,0, 11);
回声';
回波串(str1美元,16, 28);
回声';
回波串($ str2,16, 29);
结果表明:
二十八
二十九
我是一系列比较
我是一系列比较
中国没有英语
中国与Yingwen
这个
函数非常有用,例如,截断一个较长的
文件名,但是要在中间添加它。
功能FormatName($str,$大小){
$ len = strlen(str);
如果(strlen(str)> $大小){
第一部分($str =子美元,0美元,大小 / 2);
二美元=子($str,莱恩-美元(美元/ 2美元规模),len);
返回的第一部分。……。二美元;
{人}
返回$ STR;
}
}
另外,在网上看到一个超简单的中文截取
解决方案,试用一下,效果不错:
回声substr($ str1,0,10)。Chr(0);
原理说明:
CHR(0)不为空
07null是什么,和CHR的价值(0)为0,表明16是0x00,这意味着二进制为00000000
08虽然Chr(0)不
显示任何东西,他是一个性格。
09当
汉字被截断时,根据代码规则,他总是不得不把后面的其他字符解释出来,并将其解释为汉字。这是混沌编码的
原因,0x81到0xFF和0x00组合总是显示为空
10根据本,CHR(0)是后截取的结果填充,防止发生随机编码。
----------------------------
20120705更新:
以上方法虽然好,但偶尔会有乱码,原因是不深,但你可以用以下方法UTF8字符的
文本测试。
注意:在这种方法中,汉字被计算为1个单位长度,一个英文字母和1单位长度,所以要注意定长截断时。
计算长度的方法:
功能strlen_utf8($str)
{
$ len = strlen(str);
$ = 0;
($ i = 0;$ i;
X元= substr($str,我,1);
美元= base_convert(ORD(X),10, 2);
美元= substr(00000000。$,- 8);
如果(substr($,0, 1)= = 0){
} elseif(substr($,0, 3)= = 110){
我= 1美元;
} elseif(substr($,0, 4)= = 1110){
$ I = 2;
}
美元+;
}
返回n;
} / /结束strlen_utf8;
字符串截断函数:
功能substring_utf8($str,美元美元开始,长度)
{
$ len = strlen(str);
数组();
$ = 0;
$ = 0;
($ i = 0;$ i;
X元= substr($str,我,1);
美元= base_convert(ORD(X),10, 2);
美元= substr(00000000。$,- 8);
如果($ $ $开始){
如果(substr($,0, 1)= = 0){
} elseif(substr($,0, 3)= = 110){
我= 1美元;
} elseif(substr($,0, 4)= = 1110){
$ I = 2;
}
美元+;
其他{ }
如果(substr($,0, 1)= = 0){
$ R { } = substr($str,我,1);
} elseif(substr($,0, 3)= = 110){
$ R { } = substr($str,我,2);
$ I = 1;
} elseif(substr($,0, 4)= = 1110){
$ R { } = substr($str,我,3);
$ I = 2;
其他{ }
$ = {;
}
如果(+ + $ M = $长度){
打破;
}
}
}
返回
连接($ r);
} / /结束substring_utf8;
使用同样的方法
介绍,如FormatName可以实现如下(这是一个小的
优化汉字的长度):
功能FormatName($str,$大小){
$ len = strlen_utf8($str);
one_len美元= strlen(str);
大尺寸×1.5美元美元美元Len /($ one_len);
如果(strlen_utf8($str)> $大小){
第一部分substring_utf8($str =美元0美元,,大小 / 2);
二美元= substring_utf8($str,莱恩-美元(美元/ 2美元规模),len);
返回的第一部分。……。二美元;
{人}
返回$ STR;
}
}
以上是本文的全部内容,希望能对您有所帮助,希望大家多多
支持。