Как получить параметры из строки 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

etc.

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

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

9 ответов


можно использовать 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'] для отправки данных в скрипт. Или используйте _ $REQUEST для обоих. Кроме того, как уже упоминалось, вы можете использовать функцию parse_url (), которая возвращает все части URL. Используйте часть под названием "запрос" - там вы можете найти свой параметр электронной почты. Дополнительная информация: http://php.net/manual/en/function.parse-url.php


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

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

вы можете получить параметры url-адреса следующим образом:

email = $_GET["email"];

.. или вот так:--5-->

$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=)

Я создал функцию от @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

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


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