加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

PHP截取字符串前N个字符的几种方法

发布时间:2020-05-25 02:32:28 所属栏目:PHP 来源:互联网
导读:本文章向大家介绍php截取字符串前N个字符的几种方法,N表示正整数,如:1,2,3,4,5,6,7,8,9,10等等,需要的朋友可以参考一下。

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

第一种方法:使用substr方法

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

上面代码并不完善,因为它没有检查字符串长度,完善后的代码如下:

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

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

将上面代码封装到函数里面:

function truncate($string,$length,$dots = "...") {

return (strlen($string) > $length) ? substr($string,$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,$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,$len) . "...";

}

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

return $out . "...";

}

$out.=" " . $word;

}

return $out;

}

}

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读