我正在使用preg_replace
为基于modrewrite的分页链接创建网址。
我用:
$nextURL = preg_replace('%/([\d]+)/%','/'.($pageNumber+1).'/',$currentURL);
工作正常,但是我想知道是否有更好的方法而不必在替换参数中包含'/'
。我需要将数字与两个/
之间的数字相匹配,因为网址有时可能包含页面部分以外的数字。这些数字不仅仅是数字,所以/[\d]+/
会阻止它们被替换。
答案 0 :(得分:8)
您可以使用look-around assertions:
%(?<=/)([\d]+)(?=/)%
(?<=…)
是一个积极的后瞻性断言,(?=…)
是一个积极的前瞻性断言。正则表达式(?<=/)([\d]+)(?=/)
应解释如下:
(?<=/)
- 如果当前位置后面有/
([\d]+)
- 匹配一个或多个数字(?=/)
- 但仅限于此后<{1}} 您还可以按如下方式简化表达式:
/
答案 1 :(得分:2)
尝试
$nextURL = preg_replace('%(?<=/)([\d]+)(?=/)%',($pageNumber+1),$currentURL);