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动态获取,请看看这个问题:
hjp*_*r92 105
?可以使用$_GET数组访问之后的所有参数.所以,
echo $_GET['email'];
Run Code Online (Sandbox Code Playgroud)
将从网址中提取电子邮件.
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)
使用$_GET['email']在URL参数.使用$_POST['email']用于发布的数据脚本.或_$REQUEST两者兼而有之.另外,如上所述,您可以使用parse_url()返回URL的所有部分的函数.使用名为"查询"的部分 - 您可以在那里找到您的电子邮件参数.更多信息:http://php.net/manual/en/function.parse-url.php
小智 6
您可以使用以下代码获取电子邮件地址吗?在URL中
<?php
if (isset($_GET['email'])) {
echo $_GET['email'];
}Run Code Online (Sandbox Code Playgroud)
如其他答案所述,最佳解决方案是使用
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)