≡
  • 网络编程
  • 数据库
  • CMS技巧
  • 软件编程
  • PHP笔记
  • JavaScript
  • MySQL
位置:首页 > 网络编程 > PHP笔记

php 长文章分页显示类的完整代码

人气:721 时间:2018-09-18

这篇文章主要为大家详细介绍了php 长文章分页显示类的完整代码,具有一定的参考价值,可以用来参考一下。

感兴趣的小伙伴,下面一起跟随四海网的小编罗X来看看吧。
经测试代码如下:

/**
 * 文章分页类
 *
 * @param 
 * @author 四海网 www.q1010.com
 **/
/*
For example:
$curPage = $_GET['page'];
$totalPage = $curPage;
$objArt = new article($article,40,14);
$objArt->setWrapSign("<br/>");
$objArt->setMore('more','this is complete url address.');
$part = $objArt->getOnePage($curPage,$totalPage);
echo $part;
*/
class article {
    var $string = '';
    var $curPart = '';
    var $allLine = 0;
    var $totalPage = null;
    var $curPage = 1;
    var $curLine = 1;
    var $onePageLine = 10;
    var $oneLineWord = 40;
    var $arrArticle = array();
    var $wrapSign = "\n";
    var $more = null;
    function article($str,$oneLineWord = 40,$onePageLine = 10)
    {
        $this->string = $str;
        $this->oneLineWord = $oneLineWord;
        $this->onePageLine = $onePageLine;
    }
    //设置换行符
    function setWrapSign($str)
    {
        $this->wrapSign = $str;
    }
    //是否显示更多
    function setMore($str,$link)
    {
        $this->more = array('word' => $str,'url' => $link);
    }
    //设置总页面、总行数,构造文章数组
    function getAllPage($str='')
    {
        if ($str)
            $this->string = $str;
        $this->allLine = 0;
        $arrayStr = explode($this->wrapSign,$this->string);
        foreach ($arrayStr as $num => $part) {
            $length = $this->strlen($part);
            if ($length > $this->oneLineWord) {
                $tmp_line = ceil($length / $this->oneLineWord);
            } else {
                $tmp_line = 1;
            }
            $this->allLine += $tmp_line;
            $this->arrArticle[$num] = array(
                'lines' => $tmp_line,
                'string' => $part
            );
        }
        $this->totalPage = ceil($this->allLine / $this->onePageLine);
        return $this->totalPage;
    }
    //获取某页数据
    function getOnePage($page,&$totalPage)
    {
        if (is_null($this->totalPage))
            $this->getAllPage();
        $totalPage = $this->totalPage;
        !$page && $page = 1;
        $page > $totalPage && $page = $totalPage;
        $this->curPage = $page;
        $startLine = ($page - 1) * $this->onePageLine + 1;
        $endLine = $startLine + $this->onePageLine - 1;
        $tmp_line = 0; $tmp_str = ''; $key = count($this->arrArticle);
        foreach ($this->arrArticle as $k => $part) {
            $tmp_line += $part['lines'];
            
            if ($startLine > 1 && $tmp_line - $part['lines'] < $startLine && $tmp_line >= $startLine)
            {
                $tmp_str = '';
                $startWord = ($startLine - ($tmp_line - $part['lines'] + 1)) * $this->oneLineWord;
                $startWord = $startWord < 0 ? 0 : $startWord;
                $needWord = $this->oneLineWord * $this->onePageLine;
                $part['string'] = $this->substr($part['string'],$startWord,$needWord);
                if ($tmp_line == $endLine)
                    $this->_setLastLine($part['string']);
            }
            else if ($tmp_line == $startLine - 1)
            {
                $tmp_str = '';
                continue;
            }
            else if ($tmp_line > $endLine)
            {
                $needWord = ($endLine - ($tmp_line - $part['lines'])) * $this->oneLineWord;
                $part['string'] = $this->substr($part['string'],0,$needWord);
                $this->_setLastLine($part['string']);
            }
            $tmp_str .= $part['string'];
            if ($tmp_line < $endLine && $k + 1 < $key)
                $tmp_str .= '<br/>';
            else if ($tmp_line >= $endLine || $k + 1 == $key) {
                $this->_setLastLine($part['string']);
                break;
            }
        }
        $this->curPart = $tmp_str;
        if (!is_null($this->more)) $this->_setMore();
        return $this->curPart;
    }
    //设置最后一行数据
    function _setLastLine($str)
    {
        $this->getAllPage($str);
        $startWord = ($this->allLine - 1) * $this->oneLineWord;
        $this->lastLine = $this->substr($str,$startWord,$this->oneLineWord);
    }
    //获取最后一行数据
    function getLastLine()
    {
        return $this->lastLine;
    }
    //对 more 进行设置
    function _setMore()
    {
        $length = $this->strlen($this->lastLine);
        if ($length + 15 > $this->oneLineWord) {
            $length = $this->strlen($this->curPart);
            $this->curPart = $this->substr($this->curPart,0,$length - 9) . ' ... <a href="'.$this->more['url'].'">'.$this->more['word'].'</a>';
        } else {
            $this->curPart .= ' ... <a href="'.$this->more['url'].'">'.$this->more['word'].'</a>';
        }
    }
    //支持中文的字符串长度获取(每2个字符表示一个中文字符)
    function strlen($str)
    {
        $length = 0;
        for($i = 0,$len = strlen($str);$i < $len; ++ $i) {
            $w = substr($str,$i,1);
            if (ord($w) > 160) {
                $length += 2;
                $i += 2;
            } else
                $length ++;
        }
        return $length;
    }
    //截取字符串,长度不足则舍弃
    function substr($str,$start,$len)
    {
        $string = '';
        $length = strlen($str);
        $tmp_len = 0; $tmp_start = 0;
        for($i = 0;$i < $length; ++ $i) {
            if ($tmp_len >= $len) break;
            if ($i + 1 >= $start) {//die(','.$tmp_start);
                $w = substr($str,$tmp_start,1);
                if (ord($w) > 160) {
                    if ($tmp_len + 2 <= $len)
                        $string .= substr($str,$tmp_start,3);
                    $i += 2;
                    $tmp_len += 2;
                    $tmp_start += 3;
                } else {
                    $string .= substr($str,$tmp_start,1);
                    ++ $tmp_start;
                    ++ $tmp_len;
                }
            } else {
                $w = substr($str,$tmp_start,1);
                if (ord($w) > 160) {
                    $i += 1;
                    $tmp_start += 3;
                } else {
                    ++ $tmp_start;
                }
            }
        }
        return $string;
    }
}
 For example:
 $curPage = $_GET['page'];
 $totalPage = $curPage;
 $objArt = new article($article,40,14);
 $objArt->setWrapSign("<br/>");
 $objArt->setMore('more','this is complete url address.');
 $part = $objArt->getOnePage($curPage,$totalPage);
 echo $part;


/***   代码来自四海网(www.q1010.com)   ***/

本文来自:http://www.q1010.com/173/242-0.html

注:关于php 长文章分页显示类的完整代码的内容就先介绍到这里,更多相关文章的可以留意四海网的其他信息。

关键词:分页显示

您可能感兴趣的文章

上一篇:php 通过淘宝IP地址库获取IP位置的完整代码
下一篇:PHP远程图片保存到本地的简单示例
热门文章
  • PHP 写入WRITE编码为UTF8的文件示例
  • PHP 中文字符串截取函数示例:支持gb2312,gbk,big
  • PHP 简单留言板的制作示例
  • 解决Fatal error: Call to undefined function mb_convert_encoding() in错误问题
  • PHP语言基础(标记、注释、变量、数组、常量、函数)示例
  • php 生成迅雷链接的简单示例
  • php 获取短网址的实现方法
  • PHP 通用分页类的简单示例
  • PHP 使用文件方式导入导出整个MYSQL数据库的实现方法
  • php 获取MYSQL错误的简单示例
  • 最新文章
    • 解决PHP使用redis实现统计缓存MySQL压力的问题
    • php 简单的上传进度条的简单示例
    • php 给html中引用的js和css路径打上版本号的实现方法
    • php 实现计算年龄精准到年月日的实例
    • php+ajax无刷新分页的简单示例
    • 解决php+ajax无刷新上传图片的问题
    • 解决PHP生成HTML静态页面的问题
    • 解决PHP使用uniqid函数生成唯一ID的问题
    • 解决PHP防刷票的一些问题
    • 微信access_token的获取开发的实现方法

四海网收集整理一些常用的php代码,JS代码,数据库mysql等技术文章。