In diesem Artikel wird hauptsächlich die Paginierung langer Artikel in PHP vorgestellt. Ich hoffe, dass er für alle hilfreich ist.
Wenn der Artikelinhalt relativ lang ist, zeigen wir den Artikelinhalt in Seiten an, um die Benutzererfahrung besser zu befriedigen. Der allgemeine Paging-Prozess besteht darin, beim Veröffentlichen des Artikels mehrere Seiten für den übermittelten Inhalt zu generieren Hintergrund. Statische Dateien. In diesem Artikel und in Beispielen verwenden wir PHP, um lange Artikelinhalte dynamisch zu paginieren.
Effektdemonstration ansehen Quellcode-Download
Anleitung zum Paginieren
Handbuch Paging: Allgemein Fügen Sie beim Bearbeiten von Inhalten spezielle Paging-Tags wie {pages} hinzu. Nach der Übermittlung verarbeitet das PHP-Programm das Paging entsprechend den Seitenumbrüchen und generiert verschiedene statische Seiten. Diese Paginierungsmethode ist hinsichtlich der Paginierung genau, erfordert jedoch das manuelle Hinzufügen von Seitenumbrüchen, was einen hohen Arbeitsaufwand darstellt.
Automatisches Paginieren: Das PHP-Programm paginiert den Inhalt entsprechend den festgelegten Seitenumbrüchen und generiert dann verschiedene statische Seiten. Diese Methode ist hocheffizient und stellt hohe Anforderungen an die Verarbeitung verschiedener HTML-Code-Tags.
Front-End-JS-Paging: Verwenden Sie Javascript, um lange Artikelinhalte in Segmente abzufangen und je nach Anforderung unterschiedliche segmentierte Inhalte anzuzeigen, um den Paging-Effekt zu erzielen. Diese Methode liest den Inhalt sofort und das Front-End-JS übernimmt das Paging, was ein gutes Erlebnis bietet.
Der Beispielcode in diesem Artikel erklärt, wie Sie mit PHP lange Artikelinhalte paginieren, die automatisch oder manuell paginiert werden können. Das Generieren statischer HTML-Seiten fällt nicht in den Rahmen dieses Artikels. Später werden wir die Einführung statischer Artikel speziell erläutern.
Paging-Klasse
<?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 = ''; //$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"]."?".$str; } } ?>
Die obige Cutpage-Klasse kann das Paging von Inhalten sehr gut verarbeiten und die durch verschiedene HTML-Tags verursachten Probleme bewältigen. Wenn der Inhalt einen Seitenumbruch {nextpage} hat, wird der Inhalt zuerst automatisch entsprechend dem Seitenumbruch umblättert.
Aufruf der Paging-Klasse
Wir gehen davon aus, dass der Artikelinhalt der Datei text.txt gelesen wird. Im eigentlichen Projekt soll das Formular langen Inhalt übermitteln oder lesen der datenbankbezogene Inhalt. Instanziieren Sie dann die Paging-Klasse, rufen Sie dann den entsprechenden Paging-Inhalt entsprechend der aktuellen Seite auf, geben Sie ihn aus und geben Sie die Paging-Leiste aus.
<?php $content = file_get_contents('text.txt'); $ipage = $_GET["ipage"]? intval($_GET["ipage"]):1; $CP = new cutpage($content); $page = $CP->cut_str(); echo $page[$ipage-1]; echo $CP->pagenav(); ?>
Zusammenfassung: Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, dass er für das Studium aller hilfreich sein wird.
Verwandte Empfehlungen:
PHP-Schnellsortierungsprinzip und Implementierungsmethode sowie Beispielanalyse
PHP-Methode und einfaches Beispiel für die Paging-Anzeige von Daten
Das obige ist der detaillierte Inhalt vonSo paginieren Sie lange Artikel in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!