如果我在字符串中有一个链接,例如:example.php?this=something&that=somethingelse
我如何只返回等于的值?所以:somethingelse
我已经尝试过pregmatch
,但还没有让它工作。我也不想使用substr
,因为我不确定要多久'that'
。
具体来说,我有
user={$md5_id}&activ_code={$activ_code}
被发送到另一个函数,当然我可以将活动代码作为变量传递。但我很好奇。
可以使用 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']
变量内
使用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
)
*/
?>
您可以使用substr()
andstrstr()
获取字符串的查询部分(之后的所有内容?
):
$query = substr(strstr($url, '?'), 1)
然后用于parse_str()
将查询字符串解析为变量
parse_str($query, $vars);
您需要的变量现在在$vars
数组中可用:
$that = $vars['that'];
这是有关如何使用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
)
尝试以下...
$str = "example.php?this=something&that=somethingelse";
$values = array();
$query = substr(strstr($str, "?"), 1);
parse_str($query, $values);
echo $values["that"];
与工作 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
)