2014-02-21 105 views
1

這是我第一次嘗試使用正則表達式,所以請耐心等待。php preg_replace usage -

我想使用PHP的preg_replace函數來變換一個字符串,如這樣的:

"r1=r2+robby+ara" 

"ar1b=ar2b+robby+ara" 
  • 所以對於 「R」 的每一次出現隨後的整數,我想在它之前放置一個「a」,在它之後放置一個「b」。

我已經找出了搜索部分,但沒有找到替換部分 - 下面的問號表明我在哪裏遇到麻煩。有沒有辦法「記住」[0-9]找到的整數並在替換字符串中使用它?

$s="r1=r2+robby + ara"; 

$s1=preg_replace ("/r[0-9]/","ar?b",$s); 

謝謝

回答

1

你接近,但需要括號:

$s="r1=r2+robby + ara"; 
$s1=preg_replace ("/r([0-9])/","ar$1b", $s); // produces ar1b=ar2b+robby + ara 

()告訴PHP捕捉無論是在之間(數字)。替換中的$1告訴PHP在該位置使用該值(數字)。

注意:如果您的問題真的是這個簡單,你不需要括號,並且可以使用$0,這意味着xdazz的回答「整個匹配部分,」像:

$s1=preg_replace ("/r[0-9]/","a$0b", $s); // produces ar1b=ar2b+robby + ara 
1
// \0 means the matched part 
$s1 = preg_replace('/r\d/', 'a\0b', $s); 
1

我倒是做:

$str_out = preg_replace('/\b(r\d)\b/', 'a$1b', $str_in); 

\b是一個字邊界,它可以防止在此情況下,更換xr1y