-1

我想从下面的字符串中提取字符串"t="'&''&2384'有时可能不存在。我尝试了以下方法,但得到的结果"123455asdfgh&2384"不是"123455asdfgh",我在这里做错了什么?感谢帮助。

$string="t=123455asdfgh&2384";
$match=array();

preg_match('/t=(.*)(&.*)?/', $string, $match);

echo $match[1];

注意:我需要使用常规表达式...

4

5 回答 5

1

试试这个

preg_match('/t=([^&]*)(&.*)?/', $string, $match);
于 2012-11-16T14:37:52.763 回答
1

尝试一个非贪婪的量词:

preg_match('/t=(.*?)(?=&|$)/', $string, $match);

问题是第一个.*匹配到字符串末尾的所有内容,这仍然是一个完整的匹配,因为后一组是可选的。

于 2012-11-16T14:40:14.077 回答
1

这更适合 parse_str(),而不是正则表达式。

parse_str( "t=123455asdfgh&2384", $params);
echo $params['t']; 

打印

123455asdfgh
于 2012-11-16T14:40:29.197 回答
1

这就是parse_str(解析查询字符串)的用途:

$string="t=123455asdfgh&2384";
$args = array();
parse_str($string, $args);
echo $args['t']; // outputs '123455asdfgh'
于 2012-11-16T14:41:03.503 回答
0

使用strpos()查找字符串中的起点和终点,然后提取呢?

于 2012-11-16T14:42:03.037 回答