我想从下面的字符串中提取字符串"t="
,'&'
但'&2384'
有时可能不存在。我尝试了以下方法,但得到的结果"123455asdfgh&2384"
不是"123455asdfgh"
,我在这里做错了什么?感谢帮助。
$string="t=123455asdfgh&2384";
$match=array();
preg_match('/t=(.*)(&.*)?/', $string, $match);
echo $match[1];
注意:我需要使用常规表达式...
我想从下面的字符串中提取字符串"t="
,'&'
但'&2384'
有时可能不存在。我尝试了以下方法,但得到的结果"123455asdfgh&2384"
不是"123455asdfgh"
,我在这里做错了什么?感谢帮助。
$string="t=123455asdfgh&2384";
$match=array();
preg_match('/t=(.*)(&.*)?/', $string, $match);
echo $match[1];
注意:我需要使用常规表达式...
试试这个
preg_match('/t=([^&]*)(&.*)?/', $string, $match);
尝试一个非贪婪的量词:
preg_match('/t=(.*?)(?=&|$)/', $string, $match);
问题是第一个.*
匹配到字符串末尾的所有内容,这仍然是一个完整的匹配,因为后一组是可选的。
这更适合 parse_str()
,而不是正则表达式。
parse_str( "t=123455asdfgh&2384", $params);
echo $params['t'];
这打印:
123455asdfgh
这就是parse_str
(解析查询字符串)的用途:
$string="t=123455asdfgh&2384";
$args = array();
parse_str($string, $args);
echo $args['t']; // outputs '123455asdfgh'
使用strpos()
查找字符串中的起点和终点,然后提取呢?