|
具体效果请查看http://www.leisongwang.com
设计的初衷是:文章列表页,如果用strip_tags删除了所有的样式,则首页的文章简介会显得很乱,没有样式。如果简单的用strip_tags保留p或者br,那么再截取字符串时会有p或者br被截断的情况。
设计思路为:保留p和br,然后替换p为br;再以br为分隔符对整个文章进行分隔。
具体代码如下:可直接使用
/**
* 长文章分段
* @param string $article 文章内容
* @param number $return_number 文章字节限制
* @return array
*/
private function ContentAddpage($content,$return_number=800){
$return_content = ""; //返回的字符串
$current_num = 0; //当前字符串长度
$return_content_num = 0; //上次字符串截取后的长度;用来处理最后数组中字数过长的case.
$page_num_word = array();//以br为分隔符使用preg_split分隔字符串生成的数组;
$content = strip_tags($content,'<p>,<br>');
$content = preg_replace("/<p(.*?)>/m", "<br>", $content);
$content = str_replace("</p>","", $content);
$content = preg_replace("/<br(.*?)>/m", "<br>", $content);
$content_info = preg_split("/\<br\>/",$content);//根据字符串确定段落
$art_num = count($content_info);//确定段落数
for($i=0;$i <= $art_num-1;$i++){
$page_num_word[$i] = strlen($content_info[$i]);
$current_num += $page_num_word[$i];//得到字数
if ($current_num <= $return_number){
$tmp_num = $return_number-$current_num;
$return_content .= mb_substr($content_info[$i],0,$tmp_num)."<br>";
$return_content_num = $current_num;
}else{
$tmp_num = $return_number-$return_content_num;
$return_content .= mb_substr($content_info[$i],0,$tmp_num)."<br>";
break;
}
}
return $return_content;
}
原始文章:http://www.leisongwang.com/blogs/info?id=537cacd8c9a3t |
|
|