php截取字符串第一组_PHP截取字符串前N个字符的几种方法

比如有一个字符串,我只显示字符串的前10个字符,其余字符用省略号替代。

第一种方式:使用substr方式

$string = substr($string,0,10).'...';

上面代码并不建立,因为它没有检测字符串宽度php 截取字符串前,完善后的代码如下:

$string = (strlen($string) > 13) ? substr($string,0,10).'...' : $string;

你会得到一个最多13个字符的字符串;13个(或更少)普通字符或10个字符后跟'...'

1603854413811_2.png

将前面代码封装至函数上面:

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;

}

第二种方式:

1603854413811_4.jpeg

如果您还要控制字符串字符集,则多字节扩充可以派上用场。

$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) . '...';

}

第三种方式:

有时候,你还要将字符串限制为最后一个完整的短语php 截取字符串前,即:你不希望最后一个词汇被打破,而是用第二个词汇停止。

例如:我们还要将“This is my String”限制为6个字符,而不是“This i ...”,我们希望它为“This ...”,即我们将在最后一个词汇中跳过这些破碎的字母。

class Fun {

public function limit_text($text, $len) {

if (strlen($text) $len) && $out == null) {

return substr($word, 0, $len) . "...";

}

if ((strlen($out) + strlen($word)) > $len) {

return $out . "...";

}

$out.=" " . $word;

}

return $out;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值