web-dev-qa-db-ja.com

URL文字列からパラメータを取得する方法

値としていくつかのURL文字列を持つHTMLフォームフィールド$_POST["url"]があります。値の例は以下のとおりです。

 https://example.com/test/[email protected] 
 https://example.com/test/1234?basic=2&[email protected] 
 https://example.com/test/[email protected] 
 https://example.com/test/[email protected]&testin=123 
 https://example.com/test/the-page-here/1234?someurl=key&[email protected] 

等.

これらのURL /値からemailパラメータのみを取得する方法を教えてください。

ブラウザのアドレスバーからこれらの文字列を取得していないことに注意してください。

158
Autolycus

そのためには parse_url()parse_str() を使うことができます。

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

PHPで動的に$urlを取得したい場合は、この質問を見てください。

PHP で完全なURLを取得する

348
Ruel

?以降のすべてのパラメータは、$_GET配列を使用してアクセスできます。そう、

echo $_GET['email'];

uRLからメールを抽出します。

97
hjpotter92

parse_url() および parse_str() メソッドを使用してください。 parse_url()はURL文字列をその部分の連想配列に解析します。 URLの一部だけが必要なので、ショートカットを使用して必要な部分だけを含む文字列値を返すことができます。次に、parse_str()はクエリ文字列の各パラメータに対して変数を作成します。現在のコンテキストを汚染するのは嫌いなので、2番目のパラメータを指定するとすべての変数が連想配列になります。

$url = "https://mysite.com/test/[email protected]&testin=123";
$query_str = parse_url($url, PHP_URL_QUERY);
parse_str($query_str, $query_params);
print_r($query_params);

//Output: Array ( [email] => [email protected] [testin] => 123 ) 
38
JCotton

URLのパラメータには$_GET['email']を使用してください。スクリプトに送信されたデータに$_POST['email']を使用します。または両方に_$REQUESTを使用してください。また、前述のように、URLのすべての部分を返すparse_url()関数を使用することもできます。 'query'という部分を使用してください - そこにあなたのemailパラメータを見つけることができます。より多くの情報: http://php.net/manual/en/function.parse-url.php

9
Paul Denisevich

あなたは後に電子メールアドレスを取得するために以下のコードを使用することができますか? URLに

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

関数 from @Ruel answer を作成しました。これを使うことができます:

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 protected]";
echo get_valueFromStringUrl($url , "email");

@Ruelに感謝

3
mghhgm

あなたはこのような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=)
3
LeoM2G

他の答えで述べたように、最善の解決策は

parse_url()

parse_url()parse_str() の組み合わせを使う必要があります。

parse_url()はURLを解析し、queryキーを使ってクエリ文字列を取得できるそのコンポーネントを返します。次に、クエリ文字列を解析して変数に値を返すparse_str()を使用します。

$url = "https://example.com/test/1234?basic=2&[email protected]";
parse_str(parse_url($url)['query'], $params);
echo $params['email']; // [email protected]

また、 regex を使用してこの作業を実行できます。

preg_match()

URLからクエリ文字列の特定の値を取得するためにpreg_match()を使うことができます。

preg_match("/&?email=([^&]+)/", $url, $matches);
echo $matches[1]; // [email protected]

preg_replace()

また、preg_replace()を使用して、この作業を 1行で実行できます。

$email = preg_replace("/^https?:\/\/.*\?.*email=([^&]+).*$/", "$1", $url);
// [email protected]
2
Mohammad
$uri = $_SERVER["REQUEST_URI"];
$uriArray = explode('/', $uri);
$page_url = $uriArray[1];
$page_url2 = $uriArray[2];
echo $page_url; <- see the value

これは私にとってphpを使用して素晴らしい仕事をしています

2
Asesha George
$web_url='http://www.writephponline.com?name=shubham&[email protected]';
$query = parse_url($web_url,PHP_URL_QUERY);
parse_str($query,$queryArray);

echo "Name: ".$queryArray['name'];  // Result: shubham
echo "EMail: ".$queryArray['email']; // Result:[email protected]
0
SHUBHAM SINGH

Laravelでは、私は使用しています:

private function getValueFromString(string $string, string $key)
{
    parse_str(parse_url($string, PHP_URL_QUERY), $result);

    return isset($result[$key]) ? $result[$key] : null;
}
0
Ronald Araújo