## 長文本縮略
做項目的時候偶爾會遇到要講一下長文本進行縮略的需求,這里提供一個案例來講解一下具體的做法。
### 案例
有一段文章,由于內容比較長,所以在顯示的時候需要進行縮略。
#### 原文如下
>《讓我們蕩起雙槳》是抒情的二部曲式合唱,表現作曲家對現實生活的感受。描繪了新中國的花朵們在灑滿陽光的湖面上,劃著小船盡情游玩、愉快唱歌的歡樂景象。
#### 縮略后的內容如下
>《讓我們蕩起雙槳》是抒情的二部曲式合唱,...
### 代碼實現
理論上我們可以直接使用PHP自帶的字符串截取函數來處理,然后截完打上省略號就可以的,但是實際操作后,會出現返回字符串或者亂碼的情況,代碼如下:
```
<?php
$str = '《讓我們蕩起雙槳》是抒情的二部曲式合唱,表現作曲家對現實生活的感受。
描繪了新中國的花朵們在灑滿陽光的湖面上,劃著小船盡情游玩、愉快唱歌的歡樂景象。';
echo substr($v['content'], 0, 20) . '...';
/* 輸出:空字符串
* 這里實際已經報錯了,所以后續的連接操作也顯示不出來
*/
```
這種方式行不通的話,那么可行的操作是怎么樣的呢?
實際上我們知道中文字符是由編碼翻譯而成的,所以不能以純字符的方式來截取,而php_mbstring這個擴展則為我們封裝了根據編碼類型來截取的方法,示例如下:
```
<?php
$str = '《讓我們蕩起雙槳》是抒情的二部曲式合唱,表現作曲家對現實生活的感受。
描繪了新中國的花朵們在灑滿陽光的湖面上,劃著小船盡情游玩、愉快唱歌的歡樂景象。';
echo mb_substr($v['content'], 0, 20, 'GBK') . '...'; // 輸出:《讓我們蕩起雙槳》是抒情的二部曲式合唱,...
```
到此,問題圓滿解決。