>백엔드 개발 >PHP 튜토리얼 >PHP는 긴 기사의 페이지를 매깁니다.

PHP는 긴 기사의 페이지를 매깁니다.

巴扎黑
巴扎黑원래의
2016-11-12 11:35:131186검색

디자인의 원래 의도는 기사 목록 페이지입니다. Strip_tags를 사용하여 모든 스타일을 삭제하면 홈페이지의 기사 소개가 지저분해 보이고 스타일이 없어 보입니다. p 또는 br을 유지하기 위해 단순히 p 또는 br을 유지하기 위해 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으로 문의하세요.
이전 기사:배열 재귀 방법다음 기사:배열 재귀 방법