如何获取URL的查询字符串(问号后面的部分)?

时间:2013-05-16 17:04:06

标签: php regex

如何只从查询字符串中获取内容?:

asegment参数1 =值1&安培; param2的=值2

注意:我只需要“?”之后的所有内容,我也想省略该字符。

6 个答案:

答案 0 :(得分:3)

如果你确定你的字符串中有一个查询,那么这就可以了:

echo substr( $string, strpos( $string, '?' ) + 1 );

如果你的字符串可能不包含查询,那么先检查 - strpos将返回布尔值假。

答案 1 :(得分:2)

这是正则表达式\?(.+)Rubular to prove it。并使用它:

preg_match("/\?(.+)/", $inputString, $matches);
if (!$matches) {
    // no matches
}

$result = $matches[1];

答案 2 :(得分:1)

在此之前你有几个选择,不需要像

这样的正则表达式
$val = (strpos("?", $url) !== false? substr($url, strpos($url, "?")): "");

或parse_url

$val = parse_url($url, PHP_URL_QUERY);

编辑

修复了没有查询字符串

的情况

答案 3 :(得分:1)

\([A-z0-9A-Z&安培; =] +)?*

这看起来像是在处理URL,考虑为它们设计的库。如果你只对在?之后获得所有内容感兴趣,那么请使用类似

的内容
String s = "asegment?param1=value1&param2=value2";
String paramStr = s.substring(s.indexOf('?')-1);

编辑:没看到你使用的是PHP - 无视。

答案 4 :(得分:0)

这是使用strrevstrtok ...

的简单解决方案
$url = "asegment?param1=value1&param2=value2";
echo strrev(strtok(strrev($url),'?'));

答案 5 :(得分:0)

您应该使用$ _GET全局数组<?php echo $_GET["param1"]; ?>