长文章分页类(自家用)

这个类并不难,思路来自分页,思想是在内容里加入不在页面显示的标签, 作为分页的标志!

类中有个url分析的函数,是亲自试验出来的!可能跟您想要的不一样!主要还有个在后台使用的js,那是个难点,我用了半天的时间,调试跟查找

<?php
/**
author sanshi
    QQ:35047205
    Email:sanshi0815@tom.com
    MSN:sanshi0815@tom.com
*
*@version  1.0.0  2005/10/25
*
*@deprecated     
长文章分页
edit  2005/10/26 add function is _delNull()
*/
class stringPage
{
 var $sumpage  = 0;//看此篇文章有多少页
 var $showPage = 0;//要显示那段
 var $curPage  = 0;//当前显示段
 var $content  = array();//内容存储数组
 var $file;     //设置传输页
 var $pvar;
 var $format;   //设置分隔符号
 /*
 param $text    要分隔的文本
 param $format  分割符号
 */
 function stringPage($text,$format='<!--@-->')
 {
  $this->content = $this->_delNull( explode($format,$text) );
  //去掉空元素,并去掉相同的元素
  //$this->content = $this->_delNull( array_unique( explode($format,$text) ) );
  $this->sumpage = count($this->content);
  $this->format  = $format;
 }
 function _delNull($array)
 {
  $temp=array();
  $f="/^(&nbsp|<p>|&nbsp;){0,}$/";
  for($i=0;$i<count($array);$i++)
  {
   if(!preg_match_all($f,$array[$i],$out))
   {
    $temp[]=$array[$i];
   }
  }
  return $temp;
 }
 function show($file='',$pvar='')
 {
  $this->file = empty($file)? $HTTP_SERVER_VARS['PHP_SELF'] : $file ;
  $this->pvar = empty($pvar)? 'apage' : $pvar;
  $p = $_GET[$this->pvar];
  $p = ( $p=='')? 1 : $p;  
  $this->curPage = $p;
  $tmp='';
  //$tmp.= $this->_showHead();
  $tmp.= $this->content[$this->curPage-1];
  $tmp.= $this->_showFoot();
  return $tmp;
  //echo $this->_showFoot();
 }
 function _makeUrl($url)
 {
  $arrayUrl=parse_url($url);
  $q=$arrayUrl['query'];
  if(strpos($q,$this->pvar)===false)
  {
   return $url.'&'.$this->pvar."=";   
  }else{
   $url=explode('=',$q);
   $url[count($url)-1]='';
   //$arrayUrl['query']=implode('=',$url);
   return $this->file.'?'.implode('=',$url);
  }
 }
 function _showHead()
 {
  $url=$this->_makeUrl($_SERVER["REQUEST_URI"]);
  $upPage=$this->curPage-1;
  $downPage=$this->curPage+1;
  $head="<dir class='article_bar'>";
  if($this->curPage>1&&$this->curPage>0)
  {
   $head.= "<a href=".$url.$upPage.">上一页</a>&nbsp;&nbsp;";
  }
  if($this->sumpage>1&&$this->curPage<$this->sumpage)
  {
   $head.= "<a href=".$url.$downPage.">下一页</a>&nbsp;&nbsp;";
  }
  $head.="第{$this->curPage}页&nbsp;&nbsp;共{$this->sumpage}页";
  $head.="</dir>";
  return $head;
 }
 function _showFoot()
 {
  return $this->_showHead();
 }
}
?>

<?php

//使用

$p=new  stringPage($print_content);

echo $p->show();

?>

所使用的js

//取得鼠标的位置
function GetCursorPos(oTextArea)
{
var s="~!@#$%^";
clipboardData.setData('text',s);
oTextArea.focus();
document.execCommand('paste');
var ret=oTextArea.value.indexOf(s);
document.execCommand('undo');
if(ret==-1) GetCursorPos(oTextArea)
return ret;
}
function addtext(content)
{
 var len=GetCursorPos(content);
 var all = hxf.content.value;
 //alert(len);
 if(len>0 && len!=all.length)
 {
  
  //alert(hxf.content.value.length);
  var old1= all.substring(0,len);
  var old2= all.substring(len,all.length);
  var format="<?=$FORMAT?>";
  var tmp=old1+format+old2;
  hxf.content.value=tmp;
  var r=content.createTextRange();
  r.moveStart('character',len);
  r.collapse(true); 
        r.select();
  //alert();
  //setCaretAtEnd(content);

  //hxf.content.focus();
 }else if(len==0){
  alert("不能在文章首设置分页!");
 }else if(len==all.length)
 {
  alert("不能在文章尾设置分页!");
 }
}

页面使用

<input type="button" name="pagep" value="设置分页" οnclick="addtext(content)" >

传递文本区域的在表单里的名称!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值