分享一个wordpress中文截断函数

这个函数是修改pearlie主题的是时候我从网上找的,因为默认情况下pearlie主题的摘要只能截断英文,对中文无能为力。所以只好自己找了一个。

代码:

function getstr($string, $length, $encoding  = 'utf-8') {
    $string = strip_tags($string);
    if($length && strlen($string) > $length) {
        //截断字符
        $wordscut = '';
        if(strtolower($encoding) == 'utf-8') {
            //utf8编码
            $n = 0;
            $tn = 0;
            $noc = 0;
            while ($n < strlen($string)) {
                $t = ord($string[$n]);
                if($t == 9 || $t == 10 || (32 <= $t && $t <= 126)) {
                    $tn = 1;
                    $n++;
                    $noc++;
                } elseif(194 <= $t && $t <= 223) {
                    $tn = 2;
                    $n += 2;
                    $noc += 2;
                } elseif(224 <= $t && $t < 239) {
                    $tn = 3;
                    $n += 3;
                    $noc += 2;
                } elseif(240 <= $t && $t <= 247) {
                    $tn = 4;
                    $n += 4;
                    $noc += 2;
                } elseif(248 <= $t && $t <= 251) {
                    $tn = 5;
                    $n += 5;
                    $noc += 2;
                } elseif($t == 252 || $t == 253) {
                    $tn = 6;
                    $n += 6;
                    $noc += 2;
                } else {
                    $n++;
                }
                if ($noc >= $length) {
                    break;
                }
            }
            if ($noc > $length) {
                $n -= $tn;
            }
            $wordscut = substr($string, 0, $n);
        } else {
            for($i = 0; $i < $length - 1; $i++) {
                if(ord($string[$i]) > 127) {
                    $wordscut .= $string[$i].$string[$i + 1];
                    $i++;
                } else {
                    $wordscut .= $string[$i];
                }
            }
        }
        $string = $wordscut;
    }
    return trim($string);
}

这个getstr就是中文截取函数了。他有三个参数:

  1. $string:要截取的字符串
  2. $length:要截取的长度
  3. $encoding:字符编码。一般不需要传值,默认utf-8.

函数在wordpress中的应用方法

将函数放入你主题的function.php中,然后在index.php等需要输出摘要的地方调用:getstr(get_the_content(),200),就可以输出200个字符的摘要。

注:get_the_content()是wordpress内置函数,用来得到文章内容,如果加了more标签,则只输出more标签之前的内容。

此函数截断字符时会清除掉字符串里的html标签,所以不会出现截取后的内容出现未闭合的HTML标签造成错位的情况。

————————————————————–

其实这个getstr()中文截断函数适用于所有PHP程序,只是我只在wordpress上用过,其他环境使用方法一样。据说此函数来源是康盛创想,质量有保证。

2 评论

发表评论

电子邮件地址不会被公开。