PHP共有3个截取函数substr、mb_substr、mb_strcut.

这三个函数都用来截取字符串,所不同的是:substr是最简单的截取,无法适应中文,会乱码;mb_substr是按字来切分字符串,而mb_strcut是按字节来切分字符串,截取中文都不会产生半个字符的现象。
这三个函数的前三个参数完全一致,即:

Function: mb_substr( $str, $start, $length, $encoding )

$str,需要截断的字符串
$start,截断开始处
$length,长度(注意,这个跟mb_strimwidth不同,1就代表一个中文字符)
$encoding,编码,utf-8或gbk。mb_substr和mb_strcut的第四个参数

详细介绍下用mb_substr把一段字符串用“左起竖排”的古文格式输出。即:


少 | 一 | 未 | 阶
年 | 寸 | 觉 | 前
易 | 光 | 池 | 梧
老 | 阴 | 塘 | 叶
学 | 不 | 春 | 已
难 | 可 | 草 | 秋
成 | 轻 | 梦 | 声
, | 。 | , | 。

$str = "少年易老学难成,一寸光阴不可轻。未觉池塘春草梦,阶前梧叶已秋声。";
$result = '';
for($i = 0; $i < 8; $i++) {
   for($j = 0; $j < 4; $j++) {
   $result .="\r".mb_substr($str, $j*8+$i, 1, 'gbk') ."\r"."|";
   $result = trim($result, '|') ."<br/>";
}
}
echo $result ;