使用 Preg_Match 在特殊字符之间提取两个值

Extract Two Value between special characters with Preg_Match

您好,我想用一个 preg_match_all

提取用户名和密码值

$url='http://xxxxxxxx.com:80/get.php?username=xxxxxx&password=xxxxxx&type=m3u_plus';

我得到了这个在我想要的地方爆炸,但我知道 preg_match_all 效果更好,你能告诉我怎么做吗?

$url_ext = parse_url($url);
$username=explode ("&",explode("=",$url_ext['query'])[1]);
$password=explode ("&",explode("=",$url_ext['query'])[2]);

我尝试使用此代码但无法正常工作

$lotes_fil='~https?://.\=(.+?)&~';
preg_match_all($lotes_fil,$url,$link_pre);

最好使用 parse_urlparse_str,如 here 所述。

但是,如果你真的想要一个正则表达式,这就可以了:

(?<=[?&])([^&=\r\n]+)=([^&=\r\n]+)

preg_match_all('/(?<=[?&])([^&=\r\n]+)=([^&=\r\n]+)/', $url, $matches);

参数名在组1,值在组2

Demo & explanation