我认为您的问题与mbstring
未启用扩展有关。
mb_internal_encoding
功能需要mbstring
扩展。它是一个non-default
扩展,默认情况下未启用。
您可以查看这里以获取有关如何安装和配置mb_string
http://www.php.net/mbstring的更多信息。
如果您在 Windows 上,请取消注释extension=php_mbstring.dll;
php.ini 中的行(在 extension=php_mbstring.dll 之前删除分号)。
如果你在linux上,你可以试试yum install php-mbstring
centos。
对于ubuntu我不清楚。
在此之后重新启动 apache。
更新:
要检查扩展是否启用,您可以使用:
if (extension_loaded('mbstring')) {
//functions using mb string extensions
}
新更新:
if (extension_loaded('mbstring')) {
mb_internal_encoding(get_bloginfo('charset'));
}
我认为 WordPress 有一个内置函数wp_set_internal_encoding()
可以处理这些问题。你只需要在你的文件中调用这个函数。wp_set_internal_encoding() 所做的与我上面解释的相同:
function wp_set_internal_encoding() {
if ( function_exists( 'mb_internal_encoding' ) ) {
if ( !@mb_internal_encoding( get_option( 'blog_charset' ) ) )
mb_internal_encoding( 'UTF-8' );
}
}
它检查是否mb_internal_encoding
function
存在(该函数仅在加载扩展时才存在)。这是检查函数是否存在的另一种方法。
优点是您只需调用该函数而不必担心其他事情。WordPress 将处理这些 .
新更新:
mb_strlen
对于您的第一个错误,请将您的函数包装在function_exists ()
like 中:
if ( function_exists( 'mb_strlen' ) ) {
mb_strlen();
}
可能是如果您启用了扩展程序并且它可能已损坏。所以最好在调用之前检查函数是否存在。
对于第二个错误,您不需要wp_set_internal_encoding
在 functions.php 或任何其他文件中添加。它是 WordPress 的内置功能。你只需要调用函数wp_set_internal_encoding
。您实际上是在声明存在的功能。所以 PHP 会返回致命错误。
新更新
在您的函数中,您有 mb_strlen 它将仅启用 mbstring 扩展。所以你应该改变
function theme_trim_long_str($str, $len = 50, $sep = ' '){
$words = split($sep, $str);
$wcount = count($words);
while( $wcount > 0 && mb_strlen(join($sep, array_slice($words, 0, $wcount))) > $len) $wcount--;
if ($wcount != count($words)) {
$str = join($sep, array_slice($words, 0, $wcount)) . '…';
}
return $str;
}
到
function theme_trim_long_str($str, $len = 50, $sep = ' '){
$words = split($sep, $str);
$wcount = count($words);
if ( function_exists( 'mb_strlen' ) ) {
while( $wcount > 0 && mb_strlen(join($sep, array_slice($words, 0, $wcount))) > $len)
$wcount--;
} else {
while( $wcount > 0 && strlen(join($sep, array_slice($words, 0, $wcount))) > $len)
$wcount--;
}
if ($wcount != count($words)) {
$str = join($sep, array_slice($words, 0, $wcount)) . '…';
}
return $str;
}
希望这可以帮助你:)