文章摘要显示出错

这两天把博客给恢复了,可是主页一直是有空白的,在本地试的时候没有问题,以为是主机的网络问题,一直没在意。后来发现网通访问我的博客速度也快了,但是就是主页卡在那里无法显示,悲催啊。看了下已经加载的页面,感觉是主题中的index.php那点的问题。因为加载到了文章摘要那里就无法显示了。尝试的删去显示摘要的代码后,主页正常了。可是摘要又无法显示。查了一下用的那些代码,那几个函数strip_tags,str_replace,mb_strimwidth,mb_strlen。发现需要开启mb_string 模块,mb_strimwidth函数才能使用。真悲催,原来是主机缺少了这个,真是用原生的kloxo问题不少呀,还是需要折腾。

操作方法:
SSH登陆,运行yum -y install php-mbstring,开始安装,结束之后reboot重启。

中间查询了一下php.ini,发现有好多,目前还不知道是怎么回事儿。大体位置如下:
/home/httpd/域名名称/php.ini
/usr/lib/kloxophp/zend/etc/php.ini
/usr/local/lxlabs/ext/php/etc/php.ini
/usr/local/lxlabs/kloxo/httpdocs/htmllib/filecore/php.ini
/usr/local/lxlabs/kloxo/httpdocs/htmllib/filecore/lxetc/misc/php.ini
查询方法
find / -name php.ini

对于不是自己架设的童鞋,在网上找到一种折中方法,不知道管用不,转载过来。

没有开启 mb_string 也能使用 mb_strimwidth() 函数

并不是所有主机都默认支持mb_strimwidth()这个函数的,前提是要开启 mb_string 这个模块。那如果主机没有开启 mb_string 就不能使用 mb_strimwidth() 函数了吗?有没有变通的办法呢?答案当然是 YES,于是也就有了本文。

先在 WordPress 主题的 functions.php 文件中添加如下代码:

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;
}

接下来在需要的地方调用如下:

post_content),0,200,'......[阅读全文]');?>

用过 mb_strimwidth() 函数的朋友已经发现了,这个新建的函数和 mb_strimwidth() 的用法是一模一样的,如果你的主机不支持 mb_string 扩展库,那可以试试本文的方法哟。

7 Comments
  1. 我的主题有次使用了某个插件也会摘要显示有问题。

    1. 恩,折腾的哈,我这个是主机支持问题。

    1. 呵呵,现在懒了,不想再折腾了

  2. :ymy:
    博主很专业呀,我都看不懂,一般我都是在主机上直接安装,在本地根本不懂怎么操作,

Leave a Reply

Time limit is exhausted. Please reload the CAPTCHA.