电脑安全

您当前的位置:主页 > 电脑安全 >

长文章 自动/手动 分页类-网络编程

来源:[db:来源]标题:   分页    编辑:电脑技术全能网 时间:2019-09-21 18:25

原标题:长文章 自动/手动 分页类-网络编程
   <?php/**长文章分页类*@packagecutpage*@authoryytcpt(无影)*@version2008-03-27*@copyrigthhttp://www.d5s.cn/ */class cutpage{var $pagestr;//被切分的内容var $pagearr;//被切分笔墨的数组格局var $sum_word;//总字数(UTF-8格局的中笔墨符也包含)var $sum_page;//总页数var $page_word;//一页几多字var $cut_tag;//主动分页符var $cut_custom;//手动分页符var $ipage;//以后切分的页数,第几页var $url;function __construct(){$this->page_word = 1000;$this->cut_tag = array("</table>", "</div>", "</p>", "<br/>", "”。", "。", ".", "!", "……", "?", ",");$this->cut_custom = "{nextpage}";$tmp_page = intval(trim($_GET["ipage"]));$this->ipage = $tmp_page>1?$tmp_page:1;}//统计总字数function get_page_word(){$this->sum_word = $this->strlen_utf8($this->pagestr);return $this->sum_word;}/*统计UTF-8编码的字符长度 *一其中文,一个英文都为一个字 */function strlen_utf8($str){ $i = 0; $count = 0; $len = strlen ($str); while ($i < $len){ $chr = ord ($str[$i]); $count++; $i++; if ($i >= $len) break; if ($chr & 0x80){ $chr <<= 1; while ($chr & 0x80) { $i++; $chr <<= 1; } } } return $count;}//设置主动分页标记function set_cut_tag($tag_arr=array()){$this->cut_tag = $tag_arr;}//设置手动分页符function set_cut_custom($cut_str){$this->cut_custom = $cut_str;}function show_cpage($ipage=0){$this->cut_str();$ipage = $ipage ? $ipage:$this->ipage;return $this->pagearr[$ipage];}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;}//表现上一条,下一条function show_prv_next(){$this->set_url();if ($this->sum_page>1 and $this->ipage<$this->sum_page){$str = "<a href='".$this->url.($this->ipage+1)."'>下一页</a> ";}if ($this->sum_page>1 and $this->ipage>1){$str.= "<a href='".$this->url.($this->ipage-1)."'>上一页</a>";}return $str;}function show_page_select(){if ($this->sum_page>1){$str = " &nbsp; <select onchange=/"location.href=this.options[this.selectedIndex].value/">";for ($i=1; $i<=$this->sum_page; $i++){$str.= "<option value='".$this->url.$i."' ".(($this->ipage)==$i ? " selected='selected'":"").">第".$i."页</option>";}$str.= "</select>";}return $str;}function show_page_select_wap(){if ($this->sum_page>1){$str = "<select ivalue='".($this->ipage-1)."'>";for ($i=1; $i<=$this->sum_page; $i++){$str.= "<option onpick='".$this->url.$i."'>第".$i."节</option>";}$str.= "</select>";}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;}}?>假如您加了新功效,或许是有改良,请与各人一同分享。长文章分页类,能够手工指定分页符,也能够让顺序主动分页。实例代码:请以UTF-8的文件编码停止测试。代码:<?phpinclude('cutpage.php');header("content-type:text/html;charset=utf-8");//设置页面编码//自界说的长文章字符串,能够包括 html 代码,若字符串中有手动分页符 {nextpage} 则优先按手动分页符停止分页$content = file_get_contents('text.txt');$ipage = $_GET["ipage"]? intval($_GET["ipage"]):1;$CP = new cutpage();$CP->pagestr = $content;$CP->cut_str();echo $CP->pagearr[$ipage-1]."<hr/>";echo $CP->show_prv_next();?>

上一篇:php 文件安装教程二-网络编程

下一篇:没有了