我有这个代码,正在我用于正则表达式的所有测试器中工作,但后来,在我真正的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???
怎么了?
答案 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++/';