0

如果我在字符串中有一个链接,例如:example.php?this=something&that=somethingelse

我如何只返回等于的值?所以:somethingelse

我已经尝试过pregmatch,但还没有让它工作。我也不想使用substr,因为我不确定要多久'that'

具体来说,我有

user={$md5_id}&activ_code={$activ_code}

被发送到另一个函数,当然我可以将活动代码作为变量传递。但我很好奇。

4

6 回答 6

4

可以使用 PHP 的parse_url () 函数解析 URL 本身,使用 parse_str () 函数解析其参数

这是一个示例片段:

$url = "example.php?this=something&that=somethingelse";
$query = parse_url($url, PHP_URL_QUERY);
parse_str($query, $result);

使用上面的代码段,您所追求的结果将在$result['that']变量内

于 2013-06-19T18:24:35.257 回答
4

使用parse_url(带有PHP_URL_QUERY参数,因为我们只想要 URL 的查询部分(在 ? 之后)),parse_str因此:

<?php
    $url = "example.php?this=something&that=somethingelse";

    parse_str(parse_url($url, PHP_URL_QUERY), $queryParams);

    print_r($queryParams);
    /*
        Array
        (
            [this] => something
            [that] => somethingelse
        )
    */
?>

演示


如果你只有字符串user={$md5_id}&activ_code={$activ_code},你可以简单地使用parse_str

<?php
    $string = "user=ABC123&activ_code=DEF456";

    parse_str($string, $queryParams);

    print_r($queryParams);

    /*
        Array
        (
            [user] => ABC123
            [activ_code] => DEF456
        )
    */
?>

演示

于 2013-06-19T18:25:10.007 回答
1

您可以使用substr()andstrstr()获取字符串的查询部分(之后的所有内容?):

$query = substr(strstr($url, '?'), 1)

然后用于parse_str()将查询字符串解析为变量

parse_str($query, $vars);

您需要的变量现在在$vars数组中可用:

$that = $vars['that'];
于 2013-06-19T18:25:57.550 回答
1

这是有关如何使用parse_url和的完整示例parse_str

示例代码

$url = "http://test.com/example.php?this=something&that=somethingelse";

$url_breakdown = parse_url($url);
parse_str($url_breakdown['query'], $url_params);

print_r($url_breakdown);
print_r($url_params);

输出

Array
(
    [scheme] => http
    [host] => test.com
    [path] => /example.php
    [query] => this=something&that=somethingelse
)
Array
(
    [this] => something
    [that] => somethingelse
)
于 2013-06-19T18:26:20.753 回答
1

尝试以下...

$str = "example.php?this=something&that=somethingelse";
$values = array();
$query = substr(strstr($str, "?"), 1);

parse_str($query, $values);

echo $values["that"];
于 2013-06-19T18:26:39.773 回答
1

与工作 preg_match

if(preg_match("/^.+that=(.+)&?$/", "example.php?this=something&that=somethingelse", $matches))
    print_r($matches);

结果

Array
(
    [0] => example.php?this=something&that=somethingelse
    [1] => somethingelse
)
于 2013-06-19T18:37:41.117 回答