提取与pattern匹配的字符串,它位于两个已定义的字符串之间

时间:2013-10-20 17:16:52

标签: php regex

所以我有一个看起来像这样的字符串:

profile=123456&imagehd=image%20profile%20123456.hd.jpg&imagesd=image%20profile%20123456.sd.jpg&name=test_user

我想要做的是在正则表达式模式的帮助下提取imagehd和图像化的字符串(image%20profile%20123456.hd.jpgimage%20profile%20123456.sd.jpg)。我没有正则表达式模式的经验,这就是我问你们的原因。我在想,为了简化操作,只需通过url解码器运行字符串,使其可用,然后获取字符串。

字符串位于imagehd=&(用于高清图像)之间以及imagesd=&之间(用于SD图像)。

3 个答案:

答案 0 :(得分:3)

为什么不使用更合适的功能?

parse_str($your_string_here, $data);
// now $data is all your data
echo $data['imagehd'];
echo "\n";
echo $data['imagesd'];

parse_str documentation

答案 1 :(得分:2)

像这样:

preg_match('~(?<=imagehd=)[^&]+~', $string, $match);
print_r($match);

答案 2 :(得分:1)

实际上,你甚至不需要正则表达式。相反,您可以使用parse_str(),它将字符串视为查询字符串,并从中构造一个数组。然后,您将$imagehd$imagesd作为变量。