2012-10-20 48 views
0

我覺得我已經做了一個很嚴重的錯誤...的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 
如您所見,210

已刪除action值。

我的錯誤在哪裏?

+0

你還沒有真正捕捉到的動作。將括號括起來。 。'動作=([0-9])' – nachito

+2

你並不需要的動作參數後專門加它,你可以只把它釘住用$文本結尾=「PARAM =測試」; – kalpaitch

回答

0

$1是子串匹配,並且與所述第一括號開始。所以要使用它將是/actions=([0-9]+)/捕獲數字。

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