値としていくつかの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
パラメータのみを取得する方法を教えてください。
ブラウザのアドレスバーからこれらの文字列を取得していないことに注意してください。
そのためには parse_url()
と parse_str()
を使うことができます。
$parts = parse_url($url);
parse_str($parts['query'], $query);
echo $query['email'];
PHPで動的に$url
を取得したい場合は、この質問を見てください。
PHP で完全なURLを取得する
?
以降のすべてのパラメータは、$_GET
配列を使用してアクセスできます。そう、
echo $_GET['email'];
uRLからメールを抽出します。
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 )
URLのパラメータには$_GET['email']
を使用してください。スクリプトに送信されたデータに$_POST['email']
を使用します。または両方に_$REQUEST
を使用してください。また、前述のように、URLのすべての部分を返すparse_url()
関数を使用することもできます。 'query'という部分を使用してください - そこにあなたのemailパラメータを見つけることができます。より多くの情報: http://php.net/manual/en/function.parse-url.php
あなたは後に電子メールアドレスを取得するために以下のコードを使用することができますか? URLに
<?php
if (isset($_GET['email'])) {
echo $_GET['email'];
}
関数 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に感謝
あなたはこのような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=)
他の答えで述べたように、最善の解決策は
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]
$uri = $_SERVER["REQUEST_URI"];
$uriArray = explode('/', $uri);
$page_url = $uriArray[1];
$page_url2 = $uriArray[2];
echo $page_url; <- see the value
これは私にとってphpを使用して素晴らしい仕事をしています
$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]
Laravelでは、私は使用しています:
private function getValueFromString(string $string, string $key)
{
parse_str(parse_url($string, PHP_URL_QUERY), $result);
return isset($result[$key]) ? $result[$key] : null;
}