Comment paginer de longs articles en PHP

墨辰丷
Libérer: 2023-03-29 19:20:02
original
2129 Les gens l'ont consulté

Cet article présente principalement comment paginer de longs articles en PHP. Les amis intéressés peuvent s'y référer. J'espère qu'il sera utile à tout le monde.

Lorsque le contenu de l'article est relativement long, afin de mieux satisfaire l'expérience utilisateur, nous affichons le contenu de l'article en pages. Le processus de pagination général consiste à générer plusieurs pages pour le contenu soumis lors de la publication de l'article dans le. arrière-plan. À travers cet article et des exemples, nous utilisons PHP pour paginer dynamiquement le contenu d'articles longs.

Voir la démonstration de l'effet  Téléchargement du code source

Comment paginer

Manuel pagination : Général Ajoutez des balises de pagination spéciales, telles que {pages}, lors de l'édition du contenu, après la soumission, le programme PHP traitera la pagination en fonction des sauts de page et générera différentes pages statiques. Cette méthode de pagination est précise en termes de pagination, mais elle nécessite l'ajout manuel de sauts de page, ce qui représente une lourde charge de travail.

Pagination automatique : le programme PHP paginera le contenu en fonction des sauts de page définis, puis générera différentes pages statiques. Cette méthode est très efficace et présente des exigences élevées pour le traitement de différentes balises de code HTML.

Pagination JS frontale : utilisez Javascript pour intercepter le contenu des articles longs en segments et afficher différents contenus segmentés en fonction des demandes pour obtenir l'effet de pagination. Cette méthode lit le contenu en une seule fois et le js frontal gère la pagination, ce qui offre une bonne expérience.

L'exemple de code de cet article explique comment utiliser PHP pour paginer le contenu d'un article long, qui peut être paginé automatiquement ou manuellement. Quant à la génération de pages HTML statiques, elle n'entre pas dans le cadre de cet article. Nous expliquerons plus tard spécifiquement l'introduction des articles statiques.

Classe de pagination

<?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>", "</p>", "</p>", "<br/>", "”。", "。", ".", "!", "……", "?", ","); 
$this->cut_custom = "{nextpage}"; 
$tmp_page = intval(trim($_GET["ipage"])); 
$this->ipage = $tmp_page>1?$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 = &#39;&#39;; 
//$str .= $this->ipage.&#39;/&#39;.$this->sum_page; 
for($i=1;$i<=$this->sum_page;$i++){ 
if($i==$this->ipage) { 
$str.= "<a href=&#39;#&#39; class=&#39;cur&#39;>".$i."</a> "; 
}else{ 
$str.= "<a href=&#39;".$this->url.$i."&#39;>".$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"]."?".$str; 
} 
} 
?>
Copier après la connexion

La classe de coupure ci-dessus peut très bien gérer la pagination du contenu et peut gérer les problèmes causés par différentes balises HTML. Si le contenu comporte un saut de page {page suivante}, le contenu sera automatiquement paginé en fonction du saut de page en premier.

Appel de la classe de pagination

Nous supposons que le contenu de l'article du fichier text.txt est lu Dans le projet lui-même, le formulaire doit soumettre un contenu long ou lu. le contenu de la table liée à la base de données. Instanciez ensuite la classe de pagination, puis appelez le contenu de pagination correspondant en fonction de la page actuelle et affichez-le, ainsi que la barre de pagination.

<?php 
$content = file_get_contents(&#39;text.txt&#39;); 
$ipage = $_GET["ipage"]? intval($_GET["ipage"]):1; 
$CP = new cutpage($content); 
$page = $CP->cut_str(); 
echo $page[$ipage-1]; 
echo $CP->pagenav(); 
?>
Copier après la connexion

Résumé  : Ce qui précède est l'intégralité du contenu de cet article, j'espère qu'il sera utile à l'étude de chacun.

Recommandations associées :

Principe de tri rapide php et méthode de mise en œuvre et exemple d'analyse

Méthode PHP pour réaliser l'affichage de la pagination des données et exemple simple

Méthode PHP pour utiliser la fonction number_format pour intercepter les décimales et l'analyse des exemples

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!