$content1="コンテンツは非常に長い必要があります...";
$current=$_REQUEST['page_t']
$result=ff_page($content1,$current);
エコー $result;
関数ff_page($content,$page)
グローバル $expert_id
If (空($page)) {
$page = 1 ;
} } //$pageに初期値を代入
$PageLength = 2000 //ページあたりの単語数 ;
$CLength = strlen($content) //記事の長さ ;
$PageCount = Floor(($CLength / $PageLength)) + 1 //ページ数を計算します ;
$PageArray=array();//改ページ位置の配列
$Seperator = array("n","r",".","!","?",";",",",""","'",".","!"," ? ",";"); //区切り記号
//エコー "ページ数:".$PageCount." ";
//エコー "長さ: ".$CLength." ";
//strpos() 関数は、別の文字列内で最初に出現した文字列の位置を返します
If($CLength
$content をエコーします。
}//ページが 1 つしかない場合は、直接印刷します
それ以外{
$PageArray[0]=0;
$Pos = 0;
$i=0;
//最初のページ、print_r($Seperator);
for( $j=0 ; $j
$Pos=strpos($content,$Seperator[$j],$PageArray[$i]+1900);
while($Pos > 0 && $Pos $i*$PageLength )
$PageArray[$i] = $Pos ;
If ($Pos+$PageLength > $CLength)
{
$start_p = $CLength-1;
}
その他{
$start_p = $Pos+$PageLength ;
}
//位置内の合計文字数を超えないように、位置を見つけるための開始点を与えます
$Pos = strpos($content,$Seperator[$j],$start_p) ;
}
//ページングポイントが見つかったら、ループから抜け出す
If($PageArray[$i]>0)
$j = $j + sizeof($Seperator) + 1;
}
for( $i = 1; $i
for( $j = 0 ; $j
$Pos=strpos($content,$Seperator[$j],$PageArray[$i-1]+1900);
while($Pos > 0 && $Pos $i*$PageLength )
{
$PageArray[$i] =
If ($Pos+$PageLength > $CLength)
{
$start_p2 = $CLength-1;
}
その他{
$start_p2 = $Pos+$PageLength ;
} $Pos = strpos($content,$Seperator[$j],$start_p2)
If($PageArray[$i]>0)
{
$j = $j + sizeof($Seperator) + 1;
}
}
//--PHP の長い記事のページング関数の最終ページ
$PageArray[$PageCount-1] = $CLength
//$ページ=2;
If($page==1)
{
$output=substr($content,0,$PageArray[$page-1]+2);
}
If($page > 1 && $page
{
$output=substr($content,$PageArray[$page-2]+2,$PageArray[$page-1]-$PageArray[$page-2]);
$output=" (ページ ".($page-1) からの続き。")n".$output;
}
// echo str_replace("n"," ",$output); //入力して改行し、必要に応じて調整します
エコー $output
if($PageCount > 1)
{
エコー "
";
echo "".$page."/".$PageCount."page ";
If($page>1)
echo "前のページ ";
その他
echo "前のページ";
for( $i=1 ; $i
echo "[".$i."] ";
If($page
echo " 次のページ ";
それ以外は
「次のページ」をエコーします
エコー "";
}
}
?>
方法 2: 改ページを使用してページを区切る
改ページによるページングは、最初の方法よりも理想的です。
一般的な考え方: 記事のコンテンツを編集するときは、コンテンツに改ページ ( など) を挿入し、記事が表示されるときに記事のコンテンツを分割します。各部分はページのコンテンツを表し、どのページを表示するかを制御します。パラメータを渡すことで表示します。
結局のところ、この方法は、手動で制御されたページングによってインターセプトされたコンテンツの方がユーザーフレンドリーであり、HTML タグが閉じられていない状況をある程度回避できます。
記事コンテンツのページネーション コードは、エディターによって挿入された改ページに基づいて動作し、非常に美しいオフセット効果を備えたページネーションを作成できます。
コードは次のとおりです |
コードをコピー |
クラスコンテンツページ
{
private $content; //記事の内容
private $pagesize; //ページあたりの最小バイト数
private $breakflag; //改ページ (カスタマイズ可能、デフォルトは n)
private $pageurl //URL アドレス
private $pagevar; //ページングパラメータ
public $pagecount; // 総ページ数
public $page; //現在のページ番号
public $pagebreak; //各ページの開始位置
function __construct($content = "",$pagesize = 10,$breakflag = "n",$pageurl = '',$pagevar = 'p')
{
$this->content = $content;
$this->pagesize = $pagesize;
$this->breakflag = $breakflag;
$this->pageurl = $pageurl;
$this->pagevar = $pagevar;
$this->getpages();
}
//総ページ数、各ページの開始位置と終了位置
パブリック関数 getpages()
{
$contentlen = strlen($this->content); //記事の総バイト数
$this->改ページ[0] = 0;
$i = 0;
$offset = $this->ページサイズ;
for ($k=0;$kpagesize;$k++)
{
if($offset > $contentlen)
{
$i++;
$this->pagebreak[$i] = $contentlen;
休憩
}
// $this->pagevar が表示される場所を検索します
$where = strpos($this->content,$this->breakflag,$offset);
if($where > $contentlen または intval($where)
{
$i++;
$this->pagebreak[$i] = $contentlen;
休憩
}
それ以外は
{
$i++;
$this->改ページ[$i] = $where;
$offset = $where + $this->ページサイズ;
}
}
$this->ページ数 = $i;
if(isset($_get[$this->pagevar]) && $_get[$this->pagevar] >1 && $_get[$this->pagevar] <= $this->pagecount)
{
$this->page = $_get[$this->pagevar];
}
それ以外
{
$this->ページ = 1;
}
}
//各ページのコンテンツ
関数getpage()
{
// 現在のページ番号のデータをインターセプトします
if($this->ページ > 1)
{
return substr($this->content,$this->pagebreak[$this->page-1]+1,$this->pagebreak[$this->page] - $this->pagebreak [$this->page-1]);
}
それ以外
{
return substr($this->content,$this->pagebreak[$this->page-1],$this->pagebreak[$this->page] - $this->pagebreak[$これ->ページ-1]);
}
}
//ページバー
パブリック関数 getpagenav()
{
if($this->ページ > 1)
{
$pagenav = "前のページ< /a> ; ";
} //数字页コードを出力
for($j=1;$j<=$this->ページ数;$j++)
{
if($j == $this->page)
{
$pagenav .= "".$j." ";
}
それ以外
{
$pagenav .= "".$j."  ; ";
}
}
//次の页
if($this->ページ < $this->ページ数 && $this->ページ数 >1)
{
$pagenav .= "下一页< ;/a> ";
}
$pagenav を返します;
}
//获取url地址
パブリック関数 geturl()
{
$url = $_server['request_uri'];
$parse_url = parse_url($url);
$query_url = $parse_url['クエリ'];
if($query_url)
{
$query_url = ereg_replace("(^|&)".$this->pagevar."=".$this->page,"",$query_url);
$url = str_replace($parse_url['query'],$query_url,$url);
if($query_url)
{
$url .= "&".$this->pagevar;
}
それ以外
{
$url .= $this->pagevar;
}
}
それ以外
{
$url .= "?".$this->pagevar;
}
$url を返します;
}
}
$content = "第一页:文章内容分页阿斯顿浪空間阿斯顿来看福建省地方吉林省福建路口附近大手拉飞机上浪费的说浪费监理费
2番目:阿斯顿房间阿双方は啊对萨拉开発行谁得谁来付款将令对方空的来福建阿里か否かを承知している
第三页:欧文炯诶哦生地拉开面来看就继续超文章内容分页滤机蓝卡
4番目:ヨーロッパの文章の拉致と4分の1の放送は両方の愛です。
$model = 新しいコンテンツページ($content);
echo $model->getpage(); //出分页内容
echo $model->getpagenav(); //出页码
?>
| |