我怎样才能只从从 ? 开始的查询字符串中获取内容:
asegment?param1=value1¶m2=value2
注意:我只需要“?”之后的所有内容,我也想省略那个字符。
如果您确定您的字符串中有一个查询,那么这将起到作用:
echo substr( $string, strpos( $string, '?' ) + 1 );
如果您的字符串可能不包含查询,则首先检查 -strpos
将返回布尔值 false。
这是 Regex\?(.+)
和Rubular 来证明它。并使用它:
preg_match("/\?(.+)/", $inputString, $matches);
if (!$matches) {
// no matches
}
$result = $matches[1];
在此之前你有几个选项不需要像这样的正则表达式
$val = (strpos("?", $url) !== false? substr($url, strpos($url, "?")): "");
或 parse_url
$val = parse_url($url, PHP_URL_QUERY);
编辑
修复了没有查询字符串的情况
\?([a-z0-9A-z&=]+)*
看起来您正在处理 URL,请考虑为它们设计的库。如果您只对 ? 之后的所有内容感兴趣,请使用类似
String s = "asegment?param1=value1¶m2=value2";
String paramStr = s.substring(s.indexOf('?')-1);
编辑:没有看到您使用的是 PHP - 忽略。
这是一个简单的解决方案,使用strrev
和strtok
...
$url = "asegment?param1=value1¶m2=value2";
echo strrev(strtok(strrev($url),'?'));
您应该使用 $_GET 全局数组<?php echo $_GET["param1"]; ?>