如何从URL字符串中获取参数?

Aut*_*cus 180 php url-parsing

我有一个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 /值中仅获取参数?

请注意,我没有从浏览器地址栏中获取这些字符串.

Rue*_*uel 388

你可以使用parse_url()parse_str()为此.

$parts = parse_url($url);
parse_str($parts['query'], $query);
echo $query['email'];
Run Code Online (Sandbox Code Playgroud)

如果你想$url用PHP动态获取,请看看这个问题:

获取PHP中的完整URL

  • 它的工作,但我在这样的日志中收到错误:PHP注意:未定义索引:查询 (3认同)

hjp*_*r92 105

?可以使用$_GET数组访问之后的所有参数.所以,

echo $_GET['email'];
Run Code Online (Sandbox Code Playgroud)

将从网址中提取电子邮件.

  • 这不是问题的答案,但当我向谷歌问这个问题时,这就是我正在寻找的答案,所以+1正确回答谷歌. (44认同)
  • 它不在url中...它是代码中的url (10认同)
  • 这可能不是问题的答案,但却是获取 URL 参数的正确且最简单的方法 - 如果它们设置正确的话: `https://example.com?email=myemail@example.com` `$email = $_GET ['电子邮件']; $email === 'myemail@example.com';` (2认同)
  • @SaurabhSingh,问题是询问如何从作为请求的一部分传递到服务器的 URL 字符串中提取参数。这个awnser只获取页面rtequest的参数,它不是如何从URL字符串中获取参数。 (2认同)

JCo*_*ton 43

使用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 ) 
Run Code Online (Sandbox Code Playgroud)


Pau*_*ich 8

使用$_GET['email']在URL参数.使用$_POST['email']用于发布的数据脚本.或_$REQUEST两者兼而有之.另外,如上所述,您可以使用parse_url()返回URL的所有部分的函数.使用名为"查询"的部分 - 您可以在那里找到您的电子邮件参数.更多信息:http://php.net/manual/en/function.parse-url.php

  • OP表示他没有从"地址栏"获取URL.这些URL只是字符串`IN`代码. (5认同)

小智 6

您可以使用以下代码获取电子邮件地址吗?在URL中

<?php
if (isset($_GET['email'])) {
    echo $_GET['email'];
}
Run Code Online (Sandbox Code Playgroud)

  • OP请求从字符串中提取变量而不是当前页面中的URL.假设字符串格式正确,parse_url()是正确的答案. (3认同)

Moh*_*mad 6

如其他答案所述,最佳解决方案是使用

parse_url()

您需要使用parse_url()和的组合parse_str()

parse_url()解析URL,返回其组成,你可以用得到的查询字符串query键。然后,您应该使用parse_str()该解析查询字符串并将值返回到变量中。

$url = "https://example.com/test/1234?basic=2&email=xyz2@test.com";
parse_str(parse_url($url)['query'], $params);
echo $params['email']; // xyz2@test.com
Run Code Online (Sandbox Code Playgroud)

您也可以使用regex进行这项工作。

preg_match()

您可以用来preg_match()从URL获取查询字符串的特定值。

preg_match("/&?email=([^&]+)/", $url, $matches);
echo $matches[1]; // xyz2@test.com
Run Code Online (Sandbox Code Playgroud)

preg_replace()

您也可以使用它一行preg_replace()完成这项工作

$url = "https://example.com/test/1234?basic=2&email=xyz2@test.com";
parse_str(parse_url($url)['query'], $params);
echo $params['email']; // xyz2@test.com
Run Code Online (Sandbox Code Playgroud)