Извлечь два значения между специальными символами с помощью Preg_Match - PullRequest
0 голосов
/ 07 августа 2020

Здравствуйте, я хочу извлечь значение имени пользователя и пароля с одним 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);

1 Ответ

1 голос
/ 07 августа 2020

Лучше использовать parse_url и parse_str, как объяснено здесь .

Но, если вам действительно нужно регулярное выражение, это сделает работу:

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

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

Имя параметра находится в группе 1, значение - в группе 2

Демонстрация и объяснение

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...