Home > Backend Development > PHP Tutorial > PHP implementation of long article paging example code (source code attached), _PHP tutorial

PHP implementation of long article paging example code (source code attached), _PHP tutorial

WBOY
Release: 2016-07-12 08:59:30
Original
1165 people have browsed it

PHP implementation of long article paging example code (source code attached),

When the article content is relatively long, in order to better meet the user experience, we display the article content in paging, The general paging process is to generate multiple paginated static files from the submitted content when publishing the article in the background. Through this article and examples, we use PHP to dynamically paginate long article content.

View the effect demonstration and download the source code

How to paginate

Manual paging: Generally, special paging tags are added when editing content, such as {pages}. After submission, the PHP program will process the paging according to the page breaks and generate different static pages. This paging method is accurate in paging, but requires manual addition of page breaks, which is a heavy workload.

Automatic paging: The PHP program will paginate the content according to the set page breaks, and then generate different static pages. This method is highly efficient and has high requirements for processing different HTML code tags.

Front-end JS paging: Use Javascript to intercept long article content into segments, and display different segmented content according to requests to achieve the paging effect. This method reads the content at once, and the front-end js handles the paging, which provides a good experience.

The example code in this article explains how to use PHP to paginate long article content, which can be paginated automatically or manually. As for generating static html pages, it is not within the scope of this article. Later we will specifically explain the introduction of static articles.

Paging class

<&#63;php 
/* 
* 长文章分页类 
*/ 
class cutpage{ 
private $pagestr; //被切分的内容 
private $pagearr; //被切分文字的数组格式 
private $sum_word; //总字数(UTF-8格式的中文字符也包括) 
private $sum_page; //总页数 
private $page_word; //一页多少字 
private $cut_tag; //自动分页符 
private $cut_custom; //手动分页符 
private $ipage; //当前切分的页数,第几页 
private $url; 
function __construct($pagestr,$page_word=1000){ 
$this->page_word = $page_word; 
$this->cut_tag = array("</table>", "</div>", "</p>", "<br/>", "”。", "。", ".", "!", "……", "?", ","); 
$this->cut_custom = "{nextpage}"; 
$tmp_page = intval(trim($_GET["ipage"])); 
$this->ipage = $tmp_page>1&#63;$tmp_page:1; 
$this->pagestr = $pagestr; 
} 
function cut_str(){ 
$str_len_word = strlen($this->pagestr); //获取使用strlen得到的字符总数 
$i = 0; 
if ($str_len_word<=$this->page_word){ //如果总字数小于一页显示字数 
$page_arr[$i] = $this->pagestr; 
}else{ 
if (strpos($this->pagestr, $this->cut_custom)){ 
$page_arr = explode($this->cut_custom, $this->pagestr); 
}else{ 
$str_first = substr($this->pagestr, 0, $this->page_word); //0-page_word个文字 cutStr为func.global中的函数 
foreach ($this->cut_tag as $v){ 
$cut_start = strrpos($str_first, $v); //逆向查找第一个分页符的位置 
if ($cut_start){ 
$page_arr[$i++] = substr($this->pagestr, 0, $cut_start).$v; 
$cut_start = $cut_start + strlen($v); 
break; 
} 
} 
if (($cut_start+$this->page_word)>=$str_len_word){ //如果超过总字数 
$page_arr[$i++] = substr($this->pagestr, $cut_start, $this->page_word); 
}else{ 
while (($cut_start+$this->page_word)<$str_len_word){ 
foreach ($this->cut_tag as $v){ 
$str_tmp = substr($this->pagestr, $cut_start, $this->page_word); //取第cut_start个字后的page_word个字符 
$cut_tmp = strrpos($str_tmp, $v); //找出从第cut_start个字之后,page_word个字之间,逆向查找第一个分页符的位置 
if ($cut_tmp){ 
$page_arr[$i++] = substr($str_tmp, 0, $cut_tmp).$v; 
$cut_start = $cut_start + $cut_tmp + strlen($v); 
break; 
} 
} 
} 
if (($cut_start+$this->page_word)>$str_len_word){ 
$page_arr[$i++] = substr($this->pagestr, $cut_start, $this->page_word); 
} 
} 
} 
} 
$this->sum_page = count($page_arr); //总页数 
$this->pagearr = $page_arr; 
return $page_arr; 
} 
//显示上一条,下一条 
function pagenav(){ 
$this->set_url(); 
$str = ''; 
//$str .= $this->ipage.'/'.$this->sum_page; 
for($i=1;$i<=$this->sum_page;$i++){ 
if($i==$this->ipage) { 
$str.= "<a href='#' class='cur'>".$i."</a> "; 
}else{ 
$str.= "<a href='".$this->url.$i."'>".$i."</a> "; 
} 
} 
return $str; 
} 
function set_url(){ 
parse_str($_SERVER["QUERY_STRING"], $arr_url); 
unset($arr_url["ipage"]); 
if (empty($arr_url)){ 
$str = "ipage="; 
}else{ 
$str = http_build_query($arr_url)."&ipage="; 
} 
$this->url = "http://".$_SERVER["HTTP_HOST"].$_SERVER["PHP_SELF"]."&#63;".$str; 
} 
} 
&#63;> 
Copy after login

The above cutpage class can handle content paging very well, and can handle the trouble caused by different html tags to paging. If the content has a page break {nextpage}, the content will be automatically paged according to the page break first.

Call paging class

We assume that the article content of the file text.txt is read. In the actual project, it should be a form submission of long content or the content of a database-related table. Then instantiate the paging class, and then call the corresponding paging content according to the current page and output it, as well as output the paging bar.

<&#63;php 
$content = file_get_contents('text.txt'); 
$ipage = $_GET["ipage"]&#63; intval($_GET["ipage"]):1; 
$CP = new cutpage($content); 
$page = $CP->cut_str(); 
echo $page[$ipage-1]; 
echo $CP->pagenav(); 
&#63;>
Copy after login

Articles you may be interested in:

  • PHP long article paging function with usage instructions, will not divide paragraphs, turn pages at the bottom
  • PHP article content is paginated and generates corresponding htm static page code
  • PHP text article pagination code by tag or length (not involving database)
  • php medium and long article pagination display implementation code

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/1098693.htmlTechArticlePHP implementation of long article paging example code (source code attached), when the article content is relatively long, in order to better satisfy users For experience, we display the article content in pages, and the general paging process is...
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template