早教吧作业答案频道 -->其他-->
php中英文截取不同长度问题的探讨$str1="汉字汉字汉字汉字汉字";$str2="Thisisenglishthisisenglish";$str3="我II说say话words";我们知道mbstrlen或mbsubstr都是将汉字做1字节处理所以截取mbsubstr($str,0
题目详情
php中英文截取不同长度问题的探讨
$str1 = "汉字汉字汉字汉字汉字";
$str2 = "Thisis english this is english";
$str3 = "我I I说say话words";
我们知道mb_strlen或mb_substr都是将汉字做1字节处理
所以截取mb_substr($str,0,6)结果为
汉字
Thisis
我I i
可以看出,第二个Thisis长度要比汉字看起来要宽一些不美观,截取更长时候效果更明显
如何做到取得的字节一样长(也就是截取的字符串看起来一样长)
/* 我试了substr这个可以截一样长
但是存在截取半个汉字乱码现象,想想也难怪
所以只需保证str的第N个字节,不是"汉字的内部"就可以用substr了
*/
//一个汉字strlen("中")为三字节,此长度不知是不是系统无关的,忘了
//高手支个招(最好不用扩展库、正则或是比较0x80 )
$str1 = "汉字汉字汉字汉字汉字";
$str2 = "Thisis english this is english";
$str3 = "我I I说say话words";
我们知道mb_strlen或mb_substr都是将汉字做1字节处理
所以截取mb_substr($str,0,6)结果为
汉字
Thisis
我I i
可以看出,第二个Thisis长度要比汉字看起来要宽一些不美观,截取更长时候效果更明显
如何做到取得的字节一样长(也就是截取的字符串看起来一样长)
/* 我试了substr这个可以截一样长
但是存在截取半个汉字乱码现象,想想也难怪
所以只需保证str的第N个字节,不是"汉字的内部"就可以用substr了
*/
//一个汉字strlen("中")为三字节,此长度不知是不是系统无关的,忘了
//高手支个招(最好不用扩展库、正则或是比较0x80 )
▼优质解答
答案和解析
utf-8的话可以用:function my_substr($str,$start,$len){$tmpstr = "";$strlen = $start + $len;for($i = 0; $i < $strlen; $i++){if( ord( substr($str,$i,1) ) > 0xa0 ){$tmpstr .= substr($str,$i,3);$i += 2;} ...
看了php中英文截取不同长度问题的...的网友还看了以下:
如图,点P是抛物线y=x^2上第一象限内的一点,点A的坐标是(3,0),设点P坐标是(x,y)(1 2020-05-14 …
如果知道y的截距和斜率怎么求x截距?Y的截距是6,斜率是负二分之一,x截距怎么求? 2020-07-30 …
在x轴上的截距是2,在y轴上的截距是3,求直线方程.过程及原因.教科书的例题上只说y=Kx+bb是 2020-07-30 …
f(x)的X截距是X=-2,Y截距是Y=3,求g(x)的截距..f(x)的X截距是X=-2,Y截距 2020-07-30 …
高中必修2,经过p(1,4)的直线在两坐标轴上的截距都是正值,且截距之和最小,则直线的方程是()这 2020-07-30 …
下列对应法则f中,构成从集合P到S的映射的是AP=R,S=(-∞,0),x∈P,y∈S,f:x→y 2020-07-30 …
设S、T是两个非空集合,且T真包含于S,S真包含于T,令X={x|x∈T且x不属于S},Y={y| 2020-08-01 …
写出下列直线的斜截式方程斜率是3在y轴上的截距是-3一,1.斜率是3在y轴上的截距是-32.倾斜角 2020-08-01 …
数学问题求下列直线的斜率以及在y轴上的截距,并画出图形;3x+y-5=0;以下是思路及过程正确吗? 2020-08-01 …
类比“两角和与差的正余弦公式”的形式,对于给定的两个函数,S(x)=,C(x)=,其中a>0,且a 2020-08-03 …