首页 » PHP » 阅读文章
内容分页之PHP源码剖析
所谓内容分页,就是根据你自己设定的标签,将较长的内容按你设置的标签来进行分页,本文涉及的两个地方,一个是地址的获取,网上有很多这样的分页教程,但是地址都是固定的,如果页面中有评论分页以及文章ID调用过来,就会非常麻烦;
CSS:
DIV.digg {PADDING-RIGHT: 3px; PADDING-LEFT: 3px; PADDING-BOTTOM: 3px; MARGIN: 3px; PADDING-TOP: 3px; TEXT-ALIGN: center}
DIV.digg A {BORDER-RIGHT: #aaaadd 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #aaaadd 1px solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 2px; MARGIN: 2px; BORDER-LEFT: #aaaadd 1px solid; COLOR: #000099; PADDING-TOP: 2px; BORDER-BOTTOM: #aaaadd 1px solid; TEXT-DECORATION: none}
DIV.digg A:hover {BORDER-RIGHT: #000099 1px solid; BORDER-TOP: #000099 1px solid; BORDER-LEFT: #000099 1px solid; COLOR: #000; BORDER-BOTTOM: #000099 1px solid}
DIV.digg A:active {BORDER-RIGHT: #000099 1px solid; BORDER-TOP: #000099 1px solid; BORDER-LEFT: #000099 1px solid; COLOR: #000; BORDER-BOTTOM: #000099 1px solid}
DIV.digg SPAN.current {BORDER-RIGHT: #000099 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #000099 1px solid; PADDING-LEFT: 5px; FONT-WEIGHT: bold; PADDING-BOTTOM: 2px; MARGIN: 2px; BORDER-LEFT: #000099 1px solid; COLOR: #fff; PADDING-TOP: 2px; BORDER-BOTTOM: #000099 1px solid; BACKGROUND-COLOR: #000099}
DIV.digg SPAN.disabled {BORDER-RIGHT: #eee 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #eee 1px solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 2px; MARGIN: 2px; BORDER-LEFT: #eee 1px solid; COLOR: #ddd; PADDING-TOP: 2px; BORDER-BOTTOM: #eee 1px solid}
PHP代码:
<?php
$contents=”fjka;fjsa;#page#批量生[newpage]#page#成分成文#page#件并且加#page#上分页代码”; //带了分页标签的原内容
$cons=”fjka;fjsa;adsfasdfas码”; //不带分页标签的原内容
function conpage($contents) {
$pagesss=’#page#’; //设定分页标签
$a=strpos($contents,$pagesss);
if($a){
$con=explode($pagesss,$contents);
$cons=count($con);
@$p = ceil($_GET[‘p’]);
if(!$p||$p<0) $p=1;
$url=$_SERVER[“REQUEST_URI”];
$parse_url=parse_url($url);
$url_query=$parse_url[“query”];
if($url_query){
$url_query=ereg_replace(“(^|&)p=$p”,””,$url_query);
$url=str_replace($parse_url[“query”],$url_query,$url);
if($url_query) $url.=”&p”; else $url.=”p”;
}else {
$url.=”?p”;
}
if($cons<=1) return false;//只有一页时不显示分页
$pagenav=”<div class=\”digg\”>”;
for($i=1;$i<=$cons;$i++){
if($i==$p){
$pagenav.='<span class=”current”>’.$p.'</span>’;
}else{
$pagenav.=”<a href=’$url=$i’>$i</a>”;
}
}
$pagenav.=”</div>”;
return $con[$p-1].$pagenav;
}else{
return $contents;
}
}
echo conpage($contents); //带有分页标签的
echo conpage($cons); //不带分页标签的
?>
另外发一个内容分页函数:
<?php
/**
* 函数名:ContentsPages
* 功能:文章内容分页
* 参数:$url文章内容页URL 类型string,$contents文章内容页内容 类型string,$ptext分页标识 类型string
* 作者:jwzzsw
*/
function ContentsPages($url,$contents,$ptext = '#page#')
{
//文章数组
$arr = explode($ptext,$contents);
//数组长度&总页数
$total = count($arr);
//当前页
$nowpage = $_GET[‘pages’]?$_GET[‘pages’]:1;
//上页
$prepage = $nowpage==1?1:$nowpage-1;
//下页
$nextpage = $nowpage>$total-1?$total:$nowpage+1;
//最后一页
$lastpage = $total;
$pdiv = ‘<br /><div style=\”height:30px;width:500px;border:1px; blackground-color:#ff0000;\”>’;
$pdiv .= “第{$nowpage}页 / 总{$total}页 ”;
//首页链接
$pdiv .= “<li style=\”display:inline;\”><a href=\”{$url}&pages=1\” style=\”text-decoration:none;\”>首页</a></li>”;
//上页链接
$pdiv .= “<li style=\”display:inline;\”><a href=\”{$url}&pages={$prepage}\” style=\”text-decoration:none;\”> 上一页 </a></li>”;
//显示分页列表
$color = ”;
for($i = 1; $i<=$total; $i++)
{
if($i == $nowpage)
{
$color= “color:#ff0000;”;
}
else
{
$color = ”;
}
$pdiv .= “ <li style=\”display:inline;\”><a href=\”{$url}&pages={$i}\” style=\”text-decoration:none;\”><span style=\”{$color}\”>{$i}</span></a></li>”;
}
//下页链接
$pdiv .= “ <li style=\”display:inline;\”><a href=\”{$url}&pages={$nextpage}\” style=\”text-decoration:none;\”> 下一页</a></li>”;
//末页链接
$pdiv .= “<li style=\”display:inline;\”><a href=\”{$url}&pages={$lastpage}\” style=\”text-decoration:none;\”> 末页 </a></li>”;
$pdiv .= ‘</div>’;
//输出内容
echo $arr[$nowpage-1];
//不分页则不显示分页列表
if( $total <=1) $pdiv = ”;
//输出分页列表
echo $pdiv;
}
?>
评论 共0条 (RSS 2.0) 发表评论