我正在尝试解析url并从中提取值。我的url值为www.mysite.com/register/?referredby=admin
。我想从此网址获取值admin
。为此,我写了以下代码。它给了我referredby=admin
的价值,但我只想admin
作为价值。我怎样才能做到这一点?以下是我的代码:
<?php
$url = $current_url="//".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
setcookie('ref_by', parse_url($url, PHP_URL_QUERY));
echo $_COOKIE['ref_by'];
?>
答案 0 :(得分:1)
您可以使用parse_str()
功能。
$url = "www.mysite.com/register/?email=admin";
$parts = parse_url($url);
parse_str($parts['query'], $query);
echo $query['email'];
答案 1 :(得分:1)
试试这段代码,
$url = "www.mysite.com/register/?referredby=admin";
$parse = parse_url($url, PHP_URL_QUERY);
parse_str($parse, $output);
echo $output['referredby'];
答案 2 :(得分:0)
O(N)
答案 3 :(得分:0)
$referred = "referredby=admin";
$pieces = explode("=", $referred);
echo $pieces[1]; // admin
答案 4 :(得分:0)
我不知道它是否仍然适合你,但也许是其他人:我最近发布了一个用于解析网址的作曲家包(https://www.crwlr.software/packages/url)。使用该库可以这样做:
$url = 'https://www.example.com/register/?referredby=admin';
$query = Crwlr\Url\Url::parse($url)->queryArray();
echo $query['referredby'];
parse方法解析url并返回一个对象,queryArray方法将url查询作为数组返回。
答案 5 :(得分:-1)
不是一个非常干净的解决方案,但你可以尝试类似的东西:
$url = "MYURL";
$parse = parse_url($url);
parse_str($parse['query']);
echo $referredby; // same name of the get param (see parse_str doc)
PHP.net:警告
从PHP 7.2开始,使用不带结果参数的函数是高度DISCOURAGED和DEPRECATED。
在函数范围内动态设置变量会遇到与register_globals完全相同的问题。
阅读使用Register Globals安全性的部分,解释它为什么是危险的。