我尝试创建下一个& prev页面网址 我创建了这个函数,但我无法替换'page ='或'/ page /'正确
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">←</span> עמוד קודם</a></li>';
}
if ($currPage>=$maxPage){
$next = '';
}else{
$next = ' <li class="next"><a href="'.$url_next.'">עמוד הבא <span aria-hidden="true">→</span></a></li>';
}
$html = ' '
.' <ul class="pager">'
.$back.$next
.' </ul>'
.' ';
return $html ;
}
echo paging($_GET["page"]);
答案 0 :(得分:1)
您可以像这样修复正则表达式:
'~(?:/page/|[&?]page=)\K\d+~'
请参阅regex demo。
<强>详情:
(?:/page/|[&?]page=)
- 与两个替代方案中的任何一个匹配的非捕获组:
/page/
- 文字子串/page/
|
- 或[&?]page=
- &
或?
后跟page=
\K
- 匹配重置运算符,丢弃目前为止匹配的所有文本\d+
- 1+位。请注意,您不需要转义/
,因为~
用作正则表达式分隔符。