在使用Google网站管理工具的时候,查看HTML 建议,发现有”短的元说明“的提示,虽然不是什么错误不妨大碍,但dream始终看着不舒服- -!!,既然说元说明长度不够(即meta的Description),那么我们就给凑够字数吧。先说明一下,下面的代码适用是基于php,当然也适用于wordpress.你仍然可以根据原思路稍微修改也能让ASP摆脱”短的元说明”的困扰.同样,你也可以根据这思路应用到其它如:重复的元说明,重复的Title标记,长的元说明.

之前本站的description用的动态说明,根据不同页面显示不同的description,具体请看《动态显示meta/根据不同页面显示相应的meta》,在文章页面用的是文章的标题作为description,也难怪会出现元说明太短的提示。那么给它加上文章摘要吧,如果文章没有摘要就从文章开始部分截取100个字(这里指的是中文,不是字节,一个中文=2字节,一个英文=1字节)。PHP的截取字符串用到的是substr函数,不过我们还是要处理一下,因为该函数可不会区分中文或者英文输入,就是说你截取出来的字符串可能会出现筹码的情况,所以我们要先自行处理一下字符串的截取问题。

function subStrings($strs, $strLength, $startIndex = 0, $strCode = ‘UTF-8’) {
if($strCode == ‘UTF-8’)
{
$pa = “/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/”;
preg_match_all($pa, $strs, $t_string);

if(count($t_string[0]) – $startIndex > $strLength) return join(”, array_slice($t_string[0], $startIndex, $strLength)).”…”;
return join(”, array_slice($t_string[0], $startIndex, $strLength));
}
else
{
$startIndex = $startIndex*2;
$strLength = $strLength*2;
$strlen = strlen($strs);
$tmpstr = ”;

for($i=0; $i< $strlen; $i )
{
if($i>=$startIndex && $i< $startIndex && $i<$strLength)
{
if(ord(substr($strs, $i, 1))>129)
{
$tmpstr.= substr($strs, $i, 2);
}
else
{
$tmpstr.= substr($strs, $i, 1);
}
}
if(ord(substr($strs, $i, 1))>129) $i ;
}
if(strlen($tmpstr)< $strlen ) $tmpstr.= “…”;
return $tmpstr;
} }

那么Description的实现就是:

$description_title =$post->post_title ;  if ($post->post_excerpt)
{
$description_excerpt= $post->post_excerpt;
//$description_excerpt=subStrings(strip_tags($post->post_content),100,0,’UTF-8′);

}
else
{
//$description_excerpt = substr(strip_tags($post->post_content),0,100);
$description_excerpt = subStrings(strip_tags($post->post_content),100,0,’UTF-8′);
}

$description=$description_title . $description_excerpt;

OK,问题解决!以上代码在wordpress2.8测试通过,其它版本应该也没问题。
顺便回顾一下用到的几个函数说明。

substr:截取字符串。但需要自行处理字符串的中文英文混合问题。
strip_tags:去除字符串中的HTML和PHP标记,如<p><title>等。

如果你不知道在哪加入这些代码请看:

相关文章:动态显示meta/根据不同页面显示相应的meta

做人要厚道,转载请注明文章来源: https://www.boxui.com/blog-history/657.html