最近更换的WHP主机,因为其php未开始mb_stimwidth()函数功能,导致使用这一函数的主题报错:
Fatal error: Call to undefined function mb_strimwidth()
在上一篇博文里,我提供了搜索到的解决方案,在主题的function.ph文件里,重新定义一个函数(比如命名为dm_stimwidth()),然后把主题里的mb_stimwith()全部替换。
这两天又偶尔琢磨一下这个问题,觉得这个方案有些繁琐,既然问题的根源在于mb_strimwitdh()函数未声明,而function.php文件里又可以定义函数,那何不直接在其中定义mb_strimwidth()呢?这样的话,只需修改这一处就可以了,大大减少了工作量。
把修改过的代码改回初始状态,重新恢复了“fatal error”,然后在function.php里加入如下代码:
function mb_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;
}
保存后,刷新。
成功!
——丙申五月廿八
于虞晟悼芹轩
文章评论