替换特定字符串后的短划线

时间:2014-12-23 01:56:55

标签: php regex preg-replace

我正在为一个青少年足球(足球)俱乐部的客户开发一个网站。他们有许多不同的团队,我在WordPress中创建了类别,例如Under 7s Falcons(slug = under-7s-falcons)。对于网站的一部分,我需要使用类别slug链接到每个Team页面,但是这些页面的URL格式略有不同:/under-7s/falcons。我一直在尝试使用PHP的preg_replace()函数将-位后面的/under-##s-falcons替换为破折号,因此它显示为/under-##s/falcons。这是我的代码:

$teamPage = preg_replace("/under-[1-9]{1,2}s-/", "/", $teamPage);

正如你所看到的,我试图匹配'在'之后'和两个数字之后的-(每个年龄,最多16个,但我已经把1-9放在了更容易的位置)。但是,这只是用under-##s替换整个/位。我如何更改它,以便仅-替换为/

感谢您的帮助:)

1 个答案:

答案 0 :(得分:1)

您可以简单地使用capturing group来实现此目的。

$teamPage = preg_replace("/(under-[1-9]{1,2}s)-/", "$1/", $teamPage);

或者您可以使用\K转义序列重置报告的匹配的起始点,并且不再包含任何以前消费的字符。

$teamPage = preg_replace("/under-[1-9]{1,2}s\K-/", "/", $teamPage);