PHP preg_replace url 获取字符串中的参数

PHP preg_replace url get parameters in string

感谢@s.d.a.p.e,我已经接近一步,但我还没有完全做到。

我想做的是替换文本块中字符串的所有实例。我想替换这样的东西:

user is ?user_id=34&first_name=Ralph so is ?user_id=1 also

有了这个:

user is /user/34/ so is /user/1/ also

这是我正在使用的 preg_replace 代码:

$pattern = '#\?user_id=([0-9]+)#';
$replace = '/user//';
echo preg_replace($pattern,$replace,$string);

有了那个模式,我最终得到了这个:

user is /user/34/&first_name=Ralph so is /user/1/ also

再次感谢。

print preg_replace(
   '#\?user_id=([0-9]+)\&(first_name=(?:.*))#',
   '/user/?',
   '?user_id=34&first_name=Ralph'
);

结果:

/user/34?first_name=Ralph  if get it right..

试试这个:

$string = "user is ?user_id=34&first_name=Ralph so is ?user_id=1 also";
$result = preg_replace('/\?(user)_id=(\d+)(.*?)(?! )/i', '///', $string );

echo $result ;

输出:

user is /user/34/&first_name=Ralph so is /user/1/ also

DEMO

我会用这个:

$string = 'user is ?user_id=34&first_name=Ralph so is ?user_id=1 also';
$pattern = '#\?user_id=([0-9]+)\S*#';
$replace = '/user//';
echo preg_replace($pattern, $replace, $string);

其中 \S 代表任何不是 space 的字符。

输出:

user is /user/34/ so is /user/1/ also