Wordpress相关 代码相关

wordpress英文主题截取中文不显示

使用secondtouch主题,页面调用中文摘要失败,查看了一下,原来的是切割中文摘要的时候失败造成的。

摘要的函数
[cc lang="php"]function content($num)
{
global $post;
$options = get_option('second-touch');

if ($options['read_more_style'] == '0'){
$read_more_link = ' ';
}else{
$read_more_link = ' '.__('Read More','crum').'';
}

$theContent = get_the_excerpt();
if ($theContent == '') {
$theContent = get_the_content();
}
$output = preg_replace('/]+./', '', $theContent);
$output = preg_replace('/

.*<\/blockquote>/', '', $output);
$output = preg_replace('|\[(.+?)\](.+?\[/\\1\])?|s', '', $output);
$output = strip_tags($output);
$limit = $num + 1;
$content = explode(' ', $output, $limit);
array_pop($content);
$content = implode(" ", $content) . $read_more_link;
echo $content;
}
[/cc]
后面的explode函数和implode函数就失效了,所以中文的就不显示。经过查找将函数修改成
[cc lang="php"]function content($num)
{
global $post;
$options = get_option('second-touch');

if ($options['read_more_style'] == '0'){
$read_more_link = ' ';
}else{
$read_more_link = ' '.__('Read More','crum').'';
}

$theContent = get_the_excerpt();
if ($theContent == '') {
$theContent = get_the_content();
}
$output = preg_replace('/]+./', '', $theContent);
$output = preg_replace('/

.*<\/blockquote>/', '', $output);
$output = preg_replace('|\[(.+?)\](.+?\[/\\1\])?|s', '', $output);
$output = strip_tags($output);
//$limit = $num + 1;
$content = mb_strcut($output,0,$num,"UTF-8"). $read_more_link;
//array_pop($content);
//$content = implode(" ", $content) . $read_more_link;
echo $content;
}[/cc]
使用mb_strcut函数就解决了,按字节书截取,还不回因为字符被拆解出现乱码的情况。

在查找过程中,发现下面切割中文字符串的函数,记录下来以后慢慢研究,和上面的函数结合是否能够按照字数输出
[cc lang="php"]
function mbstringtoarray($str,$charset) {
$strlen=mb_strlen($str);
while($strlen){
$array[]=mb_substr($str,0,1,$charset);
$str=mb_substr($str,1,$strlen,$charset);
$strlen=mb_strlen($str);
}
return $array;
}
$arr = mbstringtoarray($str,"gbk");
print_r($arr);[/cc]

一个爱好写代码的金融从业者

写一个评论