PHP从当前URL解析URL

时间:2017-11-20 09:41:18

标签: php

我正在尝试解析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'];

 ?>

6 个答案:

答案 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安全性的部分,解释它为什么是危险的。