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