使用正则表达式提取子字符串

时间:2012-11-16 14:36:46

标签: regex

我想从下面的字符串中提取"t="'&'之间的字符串,但有时可能不会出现'&2384'。我尝试过以下操作,但是我得到了结果"123455asdfgh&2384"而不是"123455asdfgh",我在这里做错了什么?谢谢你的帮助。

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

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

echo $match[1];

注意:我需要使用常规exp ...

5 个答案:

答案 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()查找字符串中的起点和终点,然后将其解压缩?