## 长文本缩略
做项目的时候偶尔会遇到要讲一下长文本进行缩略的需求,这里提供一个案例来讲解一下具体的做法。
### 案例
有一段文章,由于内容比较长,所以在显示的时候需要进行缩略。
#### 原文如下
>《让我们荡起双桨》是抒情的二部曲式合唱,表现作曲家对现实生活的感受。描绘了新中国的花朵们在洒满阳光的湖面上,划着小船尽情游玩、愉快唱歌的欢乐景象。
#### 缩略后的内容如下
>《让我们荡起双桨》是抒情的二部曲式合唱,...
### 代码实现
理论上我们可以直接使用PHP自带的字符串截取函数来处理,然后截完打上省略号就可以的,但是实际操作后,会出现返回字符串或者乱码的情况,代码如下:
```
<?php
$str = '《让我们荡起双桨》是抒情的二部曲式合唱,表现作曲家对现实生活的感受。
描绘了新中国的花朵们在洒满阳光的湖面上,划着小船尽情游玩、愉快唱歌的欢乐景象。';
echo substr($v['content'], 0, 20) . '...';
/* 输出:空字符串
* 这里实际已经报错了,所以后续的连接操作也显示不出来
*/
```
这种方式行不通的话,那么可行的操作是怎么样的呢?
实际上我们知道中文字符是由编码翻译而成的,所以不能以纯字符的方式来截取,而php_mbstring这个扩展则为我们封装了根据编码类型来截取的方法,示例如下:
```
<?php
$str = '《让我们荡起双桨》是抒情的二部曲式合唱,表现作曲家对现实生活的感受。
描绘了新中国的花朵们在洒满阳光的湖面上,划着小船尽情游玩、愉快唱歌的欢乐景象。';
echo mb_substr($v['content'], 0, 20, 'GBK') . '...'; // 输出:《让我们荡起双桨》是抒情的二部曲式合唱,...
```
到此,问题圆满解决。