preg_replace把捕获的数字不起作用

时间:2012-10-20 21:26:37

标签: php regex preg-replace

我想我犯了一个错误的错误......

这是输入:

http://www.example.com/do.php?action=5&say=text
http://www.example.com/do.php?action=8&say=text
http://www.example.com/do.php?action=10&say=text

我想在action之后添加另一个参数:

preg_replace('/action=[0-9]/', 'action=$1&param=test', $text);

但其输出是:

http://www.example.com/do.php?action=&param=test&say=text
http://www.example.com/do.php?action=&param=test&say=text
http://www.example.com/do.php?action=&param=test&say=text

如您所见,action值已删除。

我的错误在哪里?

2 个答案:

答案 0 :(得分:0)

$1是子字符串匹配,以第一个括号开头。因此,使用它将/actions=([0-9]+)/来捕获数字。

答案 1 :(得分:0)

你可以尝试

$url = "http://www.example.com/do.php?action=10&say=tex" ;
$url = preg_replace('/action=(\d+)/', "action=$1&param=test", $url);
echo $url ;

输出

http://www.example.com/do.php?action=10&param=test&say=tex