上一篇
博客网站初期如何接入广告
一个文章由文本、图片、视频、音乐和超级链接等组成。根据文章而获取文章的纯文本摘要,从文章上到下,将其它非文本的元素一一摘除。
分析非文本元素,归根结底它们均属于HTML标签, 可以使用 strip_tags 函数可以快速移除,无须正则表达式过滤。
PHP public function getPlainText($text) {
$text = stripslashes($text); //没有启用 addslashes 函数,可以不需要这句
$text = preg_replace('/ nbsp;/is','',$text);
$text = strip_tags($text); //移除HTML、XML 以及 PHP 的标签
return $text;
}
获取纯文本后,输出文件,可以用 css 样式隐藏多余的文本。
对于 seo 优化来说,隐藏的文本并不是好主意,严重的情况下会被搜索引擎惩罚。对于多余的文本,我们需要对文本进行字符串截取。
相对于英文字符串截取,含有中文字符串截取要复杂点。在使用UTF-8字符集,英文字符占1个字符,中文字符占3个字符,直接使用 strlen 函数获取的字符串长度变得不准确了。
PHP public function substrUtf8($str, $length = 120, $sign='...', $start = 0) {
if(strlen($str) < $length) {
return $str;
}
$chars = $str; $i = 0; $m = 0; $n = 0;
do {
if (preg_match ("/[0-9a-zA-Z]/", @$chars[$i])){//纯英文
$m++;
} else { //非英文字节
$n++;
}
$k = $n/3+$m/2;
$l = $n/3+$m;//最终截取长度;$l = $n/3+$m*2?
$i++;
} while ($k < $length);
$str1 = mb_substr($str,$start,$l,'utf-8');//保证不会出现乱码
return $str1.$sign;
}
在字符串截取中,截取不当的中文会出现乱码。因此需要区分好中文与英文的字符长度,保证截取字符串后, 不出现乱码现象。
最新评论Latest comments