比如有一个字符串,我只显示字符串的前10个字符,其余字符用省略号代替。
第一种方法:使用substr方法
$string = substr($string,0,10).\'...\';
上面代码并不完善,因为它没有检查字符串长度,完善后的代码如下:
$string = (strlen($string) > 13) ? substr($string,0,10).\'...\' : $string;
你会得到一个最多13个字符的字符串; 13个(或更少)普通字符或10个字符后跟'...'
将上面代码封装到函数里面:
function truncate($string, $length, $dots = \"...\") {
return (strlen($string) > $length) ? substr($string, 0, $length - strlen($dots)) . $dots : $string;
}
上面函数仍然有漏洞,当截取被wordwrap函数处理过的字符串时,会有问题:
完美的函数应该如下:
function truncate($string,$length=100,$append=\"…\") {
$string = trim($string);
if(strlen($string) > $length) {
$string = wordwrap($string, $length);
$string = explode(\"\\n\", $string, 2);
$string = $string[0] . $append;
}
return $string;
}
第二种方法:
如果您需要控制字符串字符集,则多字节扩展可以派上用场。
$charset = \'UTF-8\';
$length = 10;
$string = \'Hai to yoo! I like yoo soo!\';
if(mb_strlen($string, $charset) > $length) {
$string = mb_substr($string, 0, $length - 3, $charset) . \'...\';
}
第三种方法:
有时候,你需要将字符串限制为最后一个完整的单词,即:你不希望最后一个单词被打破,而是用第二个单词停止。
例如:我们需要将“This is my String”限制为6个字符,而不是“This i ...”,我们希望它为“This ...”,即我们将在最后一个单词中跳过那些破碎的字母。
class Fun {
public function limit_text($text, $len) {
if (strlen($text) < $len) {
return $text;
}
$text_words = explode(\' \', $text);
$out = null;
foreach ($text_words as $word) {
if ((strlen($word) > $len) && $out == null) {
return substr($word, 0, $len) . \"...\";
}
if ((strlen($out) + strlen($word)) > $len) {
return $out . \"...\";
}
$out.=\" \" . $word;
}
return $out;
}
} 继续阅读与本文标签相同的文章
下一篇 :
PHP将mysql结果集数据转化为json格式
-
太阳能新技术光伏电池在商业建筑领域的使用
2026-05-15栏目: 教程
-
如何判断一个APP页面是H5页面
2026-05-15栏目: 教程
-
电商平台“二选一”现象亟待有效规制
2026-05-15栏目: 教程
-
今晚上市,上等设计团队,全球首搭L3自动驾驶,零百加速3秒9
2026-05-15栏目: 教程
-
原来Word竟可以折叠?
2026-05-15栏目: 教程
