Php 如何使用preg_replace函数替换正则表达式模式?

Php 如何使用preg_replace函数替换正则表达式模式?,php,regex,Php,Regex,我有如下网址 /test/(?<name>\w+)/(?<id>\d+)/ /test/(?\w+)/(?\d+)/ 我想用preg_replace()函数替换它,如下所示 /test/name/(?<id>\d+)/ /test/name/(?\d+)/ 我试过了,但没有达到预期效果 $subject = '/test/(?<name>\w+)/(?<id>\d+)/'; preg_replace('#\(.*\<na

我有如下网址

/test/(?<name>\w+)/(?<id>\d+)/
/test/(?\w+)/(?\d+)/
我想用preg_replace()函数替换它,如下所示

/test/name/(?<id>\d+)/
/test/name/(?\d+)/
我试过了,但没有达到预期效果

$subject = '/test/(?<name>\w+)/(?<id>\d+)/';

preg_replace('#\(.*\<name\>.*\)#', 'name', $subject);
$subject='/test/(?\w+)/(?\d+)/;
preg#u replace(“#\(.*\.\)#'、“name”、$subject);

您可以使用
[^]+
获取所有字符,直到下一个“

$subject = '/test/(?<name>\w+)/(?<id>\d+)/';
$subject = preg_replace('#\(.*\<name\>[^)]+\)#', 'name', $subject);
echo $subject; 
$subject='/test/(?\w+)/(?\d+)/;
$subject=preg#u replace('.\[^]+\'),'name',$subject);
受试者;
产出:

/test/name/(?<id>\d+)/
/test/name/(?\d+)/

这是一个正则表达式,可以查看它是否是url@阿努巴瓦特这个问题对我来说似乎不清楚。您的输入字符串是否包含命名的捕获组?你在尝试匹配正则表达式模式吗?这里的编码意图/逻辑是什么?期望的最终结果是什么?我不明白。@mixmakusa实际上这是一个路由“/test/(?\w+)/(?\d+)/”,我在一个RouteCollectton类中使用它,我想替换正则表达式组来生成这样的url/测试/{name}/{id},使这个正则表达式函数preg_replace('.\[^]+)#','name',$subject);使用提供的参数(例如/test/name/54)将路由参数转换为实际url。解决方案如下:它工作正常!这是id([^]+\[^]+)的模式。我在正则表达式的开头添加了相同的模式,以防止替换(?\w+)。非常感谢:)