preg_replace() 的意外结果

Unexpected results with preg_replace()

我有这样的网址:

/catalog/kitchen-knives-and-accessories/?clear_cache=Y

通过使用 preg_replace() 我想让它看起来像这样:

section_code=kitchen-knives-and-accessories

将所有内容标记为粗体,这是我希望从输入中得到的预期结果

现在我正在使用:

#^/catalog/([^/]+)#

作为正则表达式,但是当我将它与 preg_replace() 一起使用时,它并没有给我预期的输出。参见:http://www.phpliveregex.com/p/dW1

我需要在正则表达式中更改什么才能获得预期结果?

如果你想使用 preg_replace() 你必须匹配整个字符串并简单地用捕获组替换它,例如

$newStr = preg_replace("#^.*/catalog/([^/]+).*#", "section_code=", $str);