Как получить параметры из строки URL?

У меня есть поле формы HTML $_POST["url"] , где в качестве значения есть строка URL. Примерами являются:

 https://example.com/test/1234?email=xyz@test.com
 https://example.com/test/1234?basic=2&email=xyz2@test.com
 https://example.com/test/1234?email=xyz3@test.com
 https://example.com/test/1234?email=xyz4@test.com&testin=123
 https://example.com/test/the-page-here/1234?someurl=key&email=xyz5@test.com

и т.п.

Как я могу получить только параметры email из этих URL-адресов / значений?

Обратите внимание, что я не получаю эти строки из адресной строки браузера.

    Вы можете использовать parse_url() и parse_str() для этого.

     $parts = parse_url($url); parse_str($parts['query'], $query); echo $query['email']; 

    Если вы хотите динамически получить $url с PHP, взгляните на этот вопрос:

    Получить полный URL-адрес в PHP

    Все параметры после ? можно получить, используя массив $_GET . Так,

     echo $_GET['email']; 

    будет извлекать электронные письма из URL-адресов.

    Используйте методы parse_url () и parse_str () . parse_url() будет анализировать строку URL в ассоциативный массив его частей. Поскольку вам нужна только одна часть URL-адреса, вы можете использовать ярлык, чтобы вернуть строковое значение только той части, которую вы хотите. Затем parse_str() создаст переменные для каждого из параметров строки запроса. Мне не нравится загрязнять текущий контекст, поэтому предоставление второго параметра помещает все переменные в ассоциативный массив.

     $url = "https://mysite.com/test/1234?email=xyz4@test.com&testin=123"; $query_str = parse_url($url, PHP_URL_QUERY); parse_str($query_str, $query_params); print_r($query_params); //Output: Array ( [email] => xyz4@test.com [testin] => 123 ) 

    Используйте $ _GET ['email'] для параметров в URL. Используйте $ _POST ['email'] для опубликованных данных для скрипта. Или используйте _ $ ЗАПРОС для обоих. Кроме того, как уже упоминалось, вы можете использовать функцию parse_url (), которая возвращает все части URL. Используйте часть под названием «запрос» – там вы можете найти свой параметр электронной почты. Дополнительная информация: http://php.net/manual/en/function.parse-url.php

    вы можете использовать ниже код для получения адреса электронной почты после? в URL-адресе

     <?php if (isset($_GET['email'])) { echo $_GET['email']; } 

    Я создал функцию из ответа @Ruel . Вы можете использовать это:

     function get_valueFromStringUrl($url , $parameter_name) { $parts = parse_url($url); if(isset($parts['query'])) { parse_str($parts['query'], $query); if(isset($query[$parameter_name])) { return $query[$parameter_name]; } else { return null; } } else { return null; } } 

    Пример:

     $url = "https://example.com/test/the-page-here/1234?someurl=key&email=xyz5@test.com"; echo get_valueFromStringUrl($url , "email"); 

    Благодаря @Ruel

     $uri = $_SERVER["REQUEST_URI"]; $uriArray = explode('/', $uri); $page_url = $uriArray[1]; $page_url2 = $uriArray[2]; echo $page_url; <- see the value 

    Это работает Grate для меня, используя php

    Вы можете получить параметры URL-адреса:

     email = $_GET["email"]; 

    .. или вот так:

     $url = $_SERVER["REQUEST_URI"]; $email = str_replace("/path/to/file.php?email=", "", $url); 

    Примеры пути к файлу:

    если URL-адрес выглядит так:

     https://example.com/file.php 

    то путь к файлу:

     /file.php (+ parameter to get. Example: ?email=) 

    вы можете использовать filter_input () см. руководство по php