Home >Backend Development >PHP Tutorial >截取字符串,长度不一样

截取字符串,长度不一样

WBOY
WBOYOriginal
2016-06-23 14:10:181343browse


截取字符串,长度不一样

<?PHP $prna=$row['description'];		   if(strlen($prna)>20)		{		$prna=mb_substr($prna,0,40,'utf-8')."...."; 		echo $prna;		}		else		{		echo $prna;		}	   	   	   	   ?>


截图经常上传不了,不知道是不是电脑有问题

结果:
MicroSD ? Produo DUO ??器....
PSP3000 排?(3件?)....
iPhone3GS SIM card 座 (黑色)....
Nokia CA-101D 短 MicroUSB???....
PSP2000 用底?(黑色)....
PSP2000 ?源接? ....
3.5mm ?塞吊?(黑色)....
iPhone 透明底塞 (3?)....


回复讨论(解决方案)

这个最好用css解决(按容器宽度)

因为字符串长度不等于像素宽度
即使你本地显示对齐了,到客户端因为客户端采用的字体不可控,也就意味着像素宽度还是不定
自己在浏览器换一下默认字体你就明白了

你的计算有问题
一般页面文字用默认的宋体显示,所以可以认为一个汉字的显示宽度为两个字母的宽度
要是字体采用了非等宽字体,那情况就要复杂多了,不在这里讨论

对于字母、符号,一个为 1个字节
对于 gbk 编码,一个汉字为 2个字节,正好符合上面的情况
对于 utf-8 编码,一个汉字为 3个字节,即每个汉字要多出 1个字节,计算占位时要 汉字数*2/3

mb_substr 是按字符截取的,无论中文还是西文都算一个。葫芦了占位因素

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn