php对长文章进行分页处理
程序员文章站
2022-04-26 11:57:17
...
设计的初衷是:文章列表页,如果用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; }
推荐阅读
-
PHP 使用 session_set_save_handler() 对 Session 进行自定义处理
-
php对长文章进行分页处理
-
Apache:如何利用.htaccess文件对PHP网站或文件进行伪静态处理
-
php中foreach和for到底有没有区别,尤其是在处理多线程(本例是对IOS进行推送)方面?
-
php、mysql怎么对特别大的数据量进行分页
-
Apache:如何利用.htaccess文件对PHP网站或文件进行伪静态处理,_PHP教程
-
PHP对postgreSQL数据库进行增删查改,该怎么处理
-
php、mysql怎么对特别大的数据量进行分页
-
对用户传入的变量进行转义操作处理,摘自ecshop_PHP教程
-
php对长文章进行分页处理