php preg_replace用法 -

时间:2014-02-21 06:28:48

标签: php preg-replace

这是我第一次尝试使用正则表达式,所以请耐心等待。

我想使用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);

谢谢

3 个答案:

答案 0 :(得分: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 :(得分:1)

// \0 means the matched part
$s1 = preg_replace('/r\d/', 'a\0b', $s);

答案 2 :(得分:1)

我会这样做:

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

\b是一个字边界,在这种情况下,它会阻止替换xr1y