WordPress内置函数mb_strimwidth()不能用的解决办法

在 wordpress 制作主题中,经常要用到 wordpress 的内置函数 mb_strimwidth(),这个函数的作用主要是用来截取字符串的,常常用在首页截取部分文字中,用的频率还是比较多的,但有些主机偏偏不支持这个函数,因为使用这个函数是需要开启PHP的 mb_string这个模块的,如果是虚拟主机的话自己就没有权限去更改了。

遇到这种情况只能用其它的方法来替代这个函数了,这个倒也不难,我们重新定义一个截取字符串的函数方法即可,代码如下:

//自定义截断函数
function dm_strimwidth($str ,$start , $width ,$trimmarker ){
$output = preg_replace('/^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$start.'}((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$width.'}).*/s','\1',$str);
return $output.$trimmarker;
}

将函数方法定义好后,在需要的地方直接调用就可以了,代码如下:

echo dm_strimwidth(strip_tags($post->post_content),0,200,'…');

这个函数实现的效果和 mb_strimwidth() 函数实现的效果是一样的,用法也一模一样,假如你的主机不支持 mb_strimwidth() 函数,就可以用以上的方法来替换了。

mb_strimwidth() 函数使用方法

按字符宽度获取

mb_strimwidth ( string $str , int $start , int $width [, string $trimmarker [, string $encoding ]] )

参数说明:

$str //指定字符串

$start //指定从何处开始截取

$width //截取文字的宽度

$trimmarker //超过$width数字后显示的字符串

$encoding //设置字符编码【例如:UTF-8】

举个例子来说明

<?php
$string="242432反对感是456犯得上广泛大使馆地方7890";
echo mb_strimwidth($string,0,14,'...','UTF-8');
?>

输出的结果就是:242432反对...