ian*_*ker 3 php regex preg-match
我正在使用preg_replace基于modrewrite的分页链接创建URL.我用:
$nextURL = preg_replace('%/([\d]+)/%','/'.($pageNumber+1).'/',$currentURL);
哪个工作正常,但我想知道是否有更好的方法,而不必包括'/'在替换参数.我需要将数字匹配为两个之间,/因为URL有时可以包含除页面部分之外的数字.这些数字不仅仅是数字,所以要/[\d]+/阻止它们被替换.
你可以使用环顾四周的断言:
%(?<=/)([\d]+)(?=/)%
Run Code Online (Sandbox Code Playgroud)
(?<=…)是一个积极的后瞻性断言和(?=…)积极的前瞻性断言.正则表达式(?<=/)([\d]+)(?=/)解释如下:
(?<=/)- 如果/当前位置后面有一个([\d]+) - 匹配一个或多个数字(?=/)- 但只有在那/之后才有您还可以按如下方式简化表达式:
preg_replace('%(?<=/)\d+(?=/)%', $pageNumber+1, $currentURL)
Run Code Online (Sandbox Code Playgroud)