php正则表达式为下一页网址

时间:2017-05-26 11:38:10

标签: php regex

我尝试创建下一个& 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">&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"]);

1 个答案:

答案 0 :(得分:1)

您可以像这样修复正则表达式:

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

请参阅regex demo

<强>详情:

  • (?:/page/|[&?]page=) - 与两个替代方案中的任何一个匹配的非捕获组:
    • /page/ - 文字子串/page/
    • | - 或
    • [&?]page= - &?后跟page=
  • \K - 匹配重置运算符,丢弃目前为止匹配的所有文本
  • \d+ - 1+位。

请注意,您不需要转义/,因为~用作正则表达式分隔符。