我想从下面的字符串中提取"t="
和'&'
之间的字符串,但有时可能不会出现'&2384'
。我尝试过以下操作,但是我得到了结果"123455asdfgh&2384"
而不是"123455asdfgh"
,我在这里做错了什么?谢谢你的帮助。
$string="t=123455asdfgh&2384";
$match=array();
preg_match('/t=(.*)(&.*)?/', $string, $match);
echo $match[1];
注意:我需要使用常规exp ...
答案 0 :(得分:1)
试试这个
preg_match('/t=([^&]*)(&.*)?/', $string, $match);
答案 1 :(得分:1)
尝试非贪心量词:
preg_match('/t=(.*?)(?=&|$)/', $string, $match);
问题是第一个.*
匹配所有内容直到字符串结尾,这仍然是完全匹配,因为后一组是可选的。
答案 2 :(得分:1)
这更适合parse_str()
,而不是正则表达式。
parse_str( "t=123455asdfgh&2384", $params);
echo $params['t'];
这prints:
123455asdfgh
答案 3 :(得分:1)
这是parse_str
的用途(解析查询字符串):
$string="t=123455asdfgh&2384";
$args = array();
parse_str($string, $args);
echo $args['t']; // outputs '123455asdfgh'
答案 4 :(得分:0)
如何使用strpos()
查找字符串中的起点和终点,然后将其解压缩?