非常简单的preg_replace不起作用

时间:2013-06-09 22:22:48

标签: php regex

我有这个代码,正在我用于正则表达式的所有测试器中工作,但后来,在我真正的PHP代码中它不起作用。我想要的是替换链接中的数字

     $value='/something.html?helperid=252';
     //patern
     $patternHelperId='/(?<=helperid=)\d{1,}/';
     //replace
     preg_replace($patternHelperId, "mynewreplacement",  $value);

     //debug
     echo "\n$value\n";//  /something.html?helperid=252????? aggain???

怎么了?

3 个答案:

答案 0 :(得分:2)

您应该将preg_replace的结果分配回$value,如下所示:

$value = preg_replace($patternHelperId, "mynewreplacement",  $value);

而且,作为旁注,\d{1,}可以替换为\d+

答案 1 :(得分:2)

preg_replace返回结果。它不会就地修改变量

答案 2 :(得分:1)

您忘记了 preg_replace 函数的结果:

$newValue = preg_replace($patternHelperId, "mynewreplacement",  $value);

echo "\n$newvalue\n";

更好的模式:

$patternHelperId='/helperid=\K\d++/';