2009-10-30 26 views
0

我有此腳本PHP PAGINATE串問題

$content = string 
if(!isset($_GET['page'])){ 
$page = 1; 
} 
else{ 
$page = $_GET['page']; 
} 

while($content[$limit]!= ' '){ 
$limit++; 
} 
print substr($content,($page-1)*$limit, $limit); 

只是正常工作第一次(如果該頁面未設置或頁面數爲1),但如果我的頁面數大於1,它分裂我的話。原因是$ limit被增加,甚至$ limit被設置爲一個與空格字符相對應的偏移量,substr()函數中的起始位置也增加了,它基本上改變了整個塊,並且我得到的最後一個字符不是我想要的空間但在空間後的第一對字母(我希望我讓自己理解)。我該如何解決這個問題?謝謝

+1

只是使用wordwrap()。 –

+0

嗯......但如何使用它;我想創建一個分頁腳本,並且它看起來不適合我想要做的事情,wordwrap會返回一個字符串(如果它返回一個數組,它甚至比我的腳本更好) – kmunky

回答

1

試試這個:

print substr($content, ($page-1) * $limit, strpos ($content, ' ' , ($page-1) * $limit)); 

這是說:

採取的$內容的子串, 以指定的頁面*每個頁面的限制 ,和給我所有的 字符,直到 下一個空間的位置。

1

由於Frank Farmer說,使用wordwrap,但有一個奇怪的分隔符。然後使用帶有該分隔符的explode來獲取數組。

$limit = 500; // max chars per page? 
$content = "lots of text ..."; // the whole article? 

if(!isset($_GET['page'])){ 
    $page = 1; 
} else { 
    $page = intval($_GET['page']); 
} 

$pages = explode("@[email protected]", wordwrap($content, $limit, "@[email protected]")); 

print $pages[$page-1];