自从装上那个缩略图插件后,在后台编辑文章时总会出现一个错误提示:
这个错误是ta_exceprt.php中的mb_strlen() 缺少一个参数。由于对php还是不怎么了解,原来mb_strlen()是统计“字”数的,但是由于各种编码的问题,所以要统计正确,就要第二个参数的协助。错误提示也没有说是哪个语句调用它时出的错误。所以我今晚上半夜就研究了一下ta_excerpt.php这个文件。
if ( !function_exists('mb_strlen') ) {
function mb_strlen ($text, $encode) {
if ($encode=='UTF-8') {
return preg_match_all('%(?:
[\x09\x0A\x0D\x20-\x7E] # ASCII
| [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte
| \xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs
| [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte
| \xED[\x80-\x9F][\x80-\xBF] # excluding surrogates
| \xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3
| [\xF1-\xF3][\x80-\xBF]{3} # planes 4-15
| \xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16
)%xs',$text,$out);
}else{
return strlen($text);
}
}
}
上面是ta_excerpt.php的一段。如果没有mb_strlen()这个函数,后面就定义一个。参数$encode没有默认值,如果调用这个函数的时候没有加这个参数,就会出现上面的错误提示。但是为什么别人的不加就可以呢?或许与php有关。
刚才网上查了一下,在linux下,如果要php支持mb_strlen()这个函数,还要用到php-mbstring这个包。我装上这个包后,然后重启apache后,错误消失了。
为了找出这个错误的原因,我把这个插件都给完全删除了。
2011-03-30:昨晚上把这个“bug”提交给作者,今早得到回复了。
日哦
12点还在忙这个 精力真充沛啊
晚上一般都是11点以后睡觉,早上8点半左右。睡眠时间是足够了。遇到一些电脑问题时,我一般都是废寝,而且解决后特别兴奋。
另:你留言是的网址拼错了啊,看来是在你的电脑上有缓存导致的。