包含参数的特定URL的preg_replace

tr3*_*ine -2 php preg-replace

我正在尝试替换URL列表的会话ID#

例如:http://www.yes.com/index.php? session = e4bce57bc39f67bebde0284f4c2ed9ba&id = 1234

我正试图摆脱这session=e4bce57bc39f67bebde0284f4c2ed9ba一点,只是保持http://www.yes.com/index.php?id=1234一点.

我正在尝试使用:

preg_replace('&\bhttp://www\.yes\.com/(?:index\.php(?:\?id(?:=[]\d!"#$%\'()*+,./:;<=>?@[\\\\_`a-z{|}~^-]*+)?&i', $subject, $regs)) 
Run Code Online (Sandbox Code Playgroud)

但这不起作用.任何帮助,将不胜感激.谢谢!

mar*_*rio 5

如果您只想剥离&session=...部件,那么preg_replace可能是最佳选择.那么只查看该部分并且不断言URL结构也是有意义的:

$url = preg_replace("/([?&])session=\w+(&|$)/", "$1", $url);
Run Code Online (Sandbox Code Playgroud)

这个模式看起来它被两个包围&,和/或以一个?和/或以字符串中的最后一个东西开头.\w+足以匹配会话ID字符串.