首頁  >  文章  >  後端開發  >  php對長文章進行分頁處理

php對長文章進行分頁處理

巴扎黑
巴扎黑原創
2016-11-21 13:25:401332瀏覽

設計的初衷是:文章列表頁,如果用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,&#39;<p>,<br>&#39;);
    $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;
}


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn