PHP文章分页报错,求指教。
PHP中文网
PHP中文网 2017-04-10 14:28:11
[PHP讨论组]
class StrPage{
            private $file;//文件内容 
            private $current;//当前页
            private $totalPage;//总的页数
            private $url;//url地址
            private $pageLen;//每页显示的内容长度
            function __construct($file,$len=500){
                    $this->file = file_get_contents($file);
                    $this->current=isset($_GET['page'])?$_GET['page']:1;
                    $this->pageLen = $len;
                    $this->totalPage = $this->getTotalPage();                
                    $this->url= $this->getUrl();
            }
            private function getTotalPage(){
                    return ceil(strlen($this->file)/$this->pageLen);
            }
            private function getUrl(){
                    $url =parse_url($_SERVER['REQUEST_URI']);
                    parse_str($url['query'],$queryArr);
                    unset($queryArr['page']);
                    $queryStr = http_build_query($queryArr);
                    return  $url['path'].'?'.$queryStr.'&page=';                
            }
            private function first(){
                    if($this->current>1)return "<a href='".$this->url."1'>首页</a>";
            }
            private function pre(){        
                    if($this->current>1)return "<a href='".$this->url.($this->current-1)."'>上一页</a>";
            }
            private function next(){
                    if($this->current<$this->totalPage)return "<a href='".$this->url.($this->current+1)."'>下一页</a>";
            }
            private function end(){
                    if($this->current<$this->totalPage) return "<a href='".$this->url.$this->totalPage."'>末页</a>";
            }
            private function pageList(){
                    for ($i=1;$i<=$this->totalPage;$i++){
                            if($i==$this->current){
                                    $pageListStr.="<span style='font-size:20px;color:#f00'>".$i."</span> ";
                            }else{
                            $pageListStr.="<a href='".$this->url.$i."'>".$i." </a>";
                            }
                    }
                    return $pageListStr;
            }
            public function pageStyle($style=1){
                    switch ($style){
                            case 1:
                                    return "共有".$this->totalPage."页".$this->first().$this->pre().$this->pageList().$this->next().$this->end();
                                    break;
                            case 2;
                                    return $this->pageList();
                                    break;
                    }
            }
            public function getContents(){
                    $prePageLen = strlen($this->subStrs($this->current-1));
                    $currentPageLen = strlen($this->subStrs($this->current));
                    return substr($this->file, $prePageLen,$currentPageLen-$prePageLen);
            }
            private function subStrs($page){
                    $len= $page*$this->pageLen;
                    for ($i = 0; $i < $len; $i++) {
                            if(ord(substr($this->file,$i,1))>0xa0){
                                            $string.=substr($this->file,$i,2);
                                            $i++;        
                            }else{
                                    $string.=substr($this->file,$i,1);
                            }
                    }
                    return $string;
            }
    }
    $php = new StrPage('75.txt',2000);
    echo "<p style='font-size:14px;line-height:1.8em;color:#666;padding:6px;width:960px;height:450px;'>".$php->getContents()."</p>";
    echo "<p style='border:solid 1px #ccc;font-size:14px;color:#333'>";
    echo $php->pageStyle();
    echo "</p>";

浏览器报错如下

请输入图片描述

经过@依云的指点,果然是编码的问题 我把读取的TXT文件另存为UTF-8格式后在火狐打开没有乱码了,但是在谷歌打开就变成全是乱码了,这样来说,我们编写的时候一般定义成什么样的编码才符合规范?

PHP中文网
PHP中文网

认证0级讲师

全部回复(3)
巴扎黑

这个你定位到具体的行看下上下相邻的变量时候预先定义了 乱码html 设置

<meta charset='utf-8'>

或者在 php开头header("Content-Type:text/html;charset='utf-8') 就行了

阿神

代码贴得好乱。那个错误是 PHP 报的,显示在了浏览器那边而已。

那个 Notice 说得很清楚了,那个变量没有定义。你应该先$pageListStr = ''

乱码可能是因为你没有指定页面的编码。比如

<meta charset="utf-8"/>

对于比较老的浏览器,需要使用更长的 meta 标签。记得把它放在页面靠前的地方。

也可能是你读取的 txt 文件的编码和浏览器/PHP脚本中使用的不一致。可以使用 iconv 转换下。

天蓬老师

一般定义,然后把文档也调整为utf8就OK了。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号