2009-09-23 2 views
0

Я застрял сейчас, вот ниже - это отладка от моего пейджингового кода, это часть, которая строит URL-адрес для пейджинговых ссылок, она отлично работала до тех пор, пока Теперь, потому что теперь я меняю весь мой сайт, чтобы использовать мод-рерайт поэтому перед страница будет выглядеть следующим образомНужна помощь с моей пейджерной функцией PHP теперь, когда я использую mod-rewrite

http://localhost/?p=mail.inbox&page=2

и теперь я хочу, чтобы это было как this..I уже есть регулярное выражение, чтобы сделать это но мне нужно изменить способ, которым мои поисковые ссылки строят ссылки на новый URL правильно

http://localhost/mail/inbox/page/2

вот код, который делает ссылки OLD, любую помощь или идеи о том, как я могу использовать для новых ссылок?

Захват - это то, как он работает сейчас, он может определить, существуют ли другие переменные в URL-адресе, и если он увидит их, он будет следить за тем, чтобы он сохранял их в URL-адресе, который он делает при создании новых ссылок на страницы, например? р = тест & Идентификатор_пользователя = 2 & цвет = зеленый & страница = 3 было бы убедиться, чтобы все лишние вещи в новом URL это делает и просто увеличить или уменьшить номер страницы

$url_string = "?"; 
foreach ($_GET as $k => $v) { 
    if ($k != "page") { // <-- the key you don't want, ie "page" 
     if ($url_string != "?") { 
      $url_string .= "&"; // Prepend ampersands nicely 
     } 
     $url_string .= $k . "=" . $v; 
    } 
} 
$selfurl = $url_string . '&page='; 
$page = $_GET['page']; 
if ($page) { 
    $start = ($page - 1) * $items_per_page; 
} 
else { 
    $start = 0; 
} 
if ($page == 0) { 
    $page = 1; //if no page var is given, default to 1. 
} 

ответ

1

Это будет делать трюк

$uri = $_SERVER['REQUEST_URI']; 
$uri = preg_replace('#page/\d+/*#', '', $uri); // remove page from uri 
$uri = preg_replace('#/$#', '', $uri); // remove trailing slash 

$selfurl = $uri . '/page/'; 
$page = $_GET['page']; 
if ($page) { 
    $start = ($page - 1) * $items_per_page; 
} else { 
    $start = 0; 
} 
if ($page == 0) { 
    $page = 1; 
} 

Что здесь делает код, это удаление части/page/2 из uri, если оно существует, и затем вы можете изменить код по своему усмотрению.
Вы упомянули, что код работает, если/page/1 часть не находится в URI, поэтому удаление этой части, если она существует, тоже должна работать.