2017-05-26 58 views
-2

我試圖創建下一個&上一頁網址 我創建這個功能,但我不能得到更換的頁面='或「/頁/」正確PHP的正則表達式的下一個頁面的url

function paging($currPage=1,$maxPage=9999999999999999){ 
    $url = urldecode($_SERVER['REQUEST_URI']); 
    $url_next = (preg_replace ('/([\/page\/|\?page=|\&page=]\d+)/', ($currPage+1),$url)); 
    $url_pre = (preg_replace ('/([\/page\/|\?page=|\&page=]\d+)/',($currPage-1),$url)); 
    if ($currPage<=1){ 
      $back = ''; 
    }else{  
      $back = ' <li class="previous"><a href="'.$url_pre.'"><span aria-hidden="true">&larr;</span> עמוד קודם</a></li>'; 
    } 
    if ($currPage>=$maxPage){ 
      $next = ''; 
    }else{  
      $next = ' <li class="next"><a href="'.$url_next.'">עמוד הבא <span aria-hidden="true">&rarr;</span></a></li>'; 
    } 
$html = ' ' 
.' <ul class="pager">' 
.$back.$next 
.' </ul>' 
.' '; 
    return $html ; 
} 
echo paging($_GET["page"]); 
+0

爲什麼你需要這個正則表達式? – Flosculus

+1

對於這兩種情況,嘗試''〜(?:/ page/| [&?] page =)\ K \ d +〜''。 –

+0

提供'$ _SERVER ['REQUEST_URI']'變體,請... 您的代碼中總有錯誤的正則表達式和邏輯... –

回答

1

你可以這樣修復正則表達式:

'~(?:/page/|[&?]page=)\K\d+~' 

查看regex demo

詳細

  • (?:/page/|[&?]page=) - 非捕獲組匹配任一2個替代品:
    • /page/ - 文字串/page/
    • | - 或
    • [&?]page= - &?隨後與page=
  • \K - 匹配復位操作丟棄所有文字到目前爲止匹配
  • \d+ - 1+數字。

注意,你不需要逃避/因爲~作爲一個正則表達式分隔符。