我正在使用 preg_replace
为基于 modrewrite 的分页链接创建 url。
我使用:
$nextURL = preg_replace('%/([\d]+)/%','/'.($pageNumber+1).'/',$currentURL);
效果很好,但是我想知道是否有更好的方法而无需在替换参数中包含 '/'
。我需要匹配两个 /
之间的数字,因为 URL 有时可以包含页面部分以外的数字。然而,这些数字绝不仅仅是数字,所以 /[\d]+/
阻止它们被替换。
最佳答案
你可以使用 look-around assertions :
%(?<=/)([\d]+)(?=/)%
(?<=…)
是一个积极的后视断言并且(?=…)
积极的前瞻性断言。正则表达式 (?<=/)([\d]+)(?=/)
解释如下:
-
(?<=/)
– 如果有/
在当前位置的后面 -
([\d]+)
– 匹配一位或多位数字 -
(?=/)
– 但前提是存在/
之后
您还可以按如下方式简化表达式:
preg_replace('%(?<=/)\d+(?=/)%', $pageNumber+1, $currentURL)
关于php - preg_replace 仅匹配的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2682177/