返回字符串的某个部分

时间:2013-06-19 18:20:49

标签: php string

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

如何仅返回相同的内容?所以:somethingelse

我已经尝试pregmatch,但还没有让它发挥作用。我也不想使用substr,因为我不确定'that'会有多长。

具体来说我有

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

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

6 个答案:

答案 0 :(得分: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']变量

答案 1 :(得分: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
        )
    */
?>

DEMO


如果您只有字符串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
        )
    */
?>

DEMO

答案 2 :(得分:1)

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

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

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

parse_str($query, $vars);

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

$that = $vars['that'];

答案 3 :(得分:1)

以下是有关如何使用parse_urlparse_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
)

答案 4 :(得分:1)

尝试以下方法......

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

parse_str($query, $values);

echo $values["that"];

答案 5 :(得分: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
)