如何获取PHP正则表达式中倒数第二个HTML链接?

如何获取PHP正则表达式中倒数第二个HTML链接?,php,regex,Php,Regex,好的,我现在开始在PHP中使用preg_match,我遇到了一个问题。我正在从一个RSS提要中获取信息,它给了我一个描述。在描述中,我想从描述中的第二个到最后一个链接中提取网址。可能有任何数量的链接,但我需要的链接总是倒数第二。但是,当我使用此代码时,它会提取描述中的所有链接: preg_match('#<a href=".*</a>#', $description, $match); 我尝试过PREG_OFFSET_CAPTURE,就输出而言,它似乎做了同样的事情。我在谷歌

好的,我现在开始在PHP中使用preg_match,我遇到了一个问题。我正在从一个RSS提要中获取信息,它给了我一个描述。在描述中,我想从描述中的第二个到最后一个链接中提取网址。可能有任何数量的链接,但我需要的链接总是倒数第二。但是,当我使用此代码时,它会提取描述中的所有链接:

preg_match('#<a href=".*</a>#', $description, $match);

我尝试过PREG_OFFSET_CAPTURE,就输出而言,它似乎做了同样的事情。我在谷歌上搜索的所有内容都只是告诉我如何抓取字符串中的最后一项。

抓取最后两项并提取其中的第一项,然后:

preg_match('#.*(<a href=".*?</a>).*?<a href=".*?</a>#', $description, $match);
你们的对手在第一组

这是因为:


*是一个贪婪的俘虏。它跳过指向字符串结尾的指针,然后尝试在下一个位置进行匹配:在找到此标记后,它尝试匹配下一个位置:.*TḦ́ẺP̯845; O̚​本校的一个月月内,本校的一个月月内的一个月内,该校的一个月内的一个月内的一个月内的一个月内的一个月内的一个月内的一个月内的一个月内的一个月内的本本本本本本本校的本本本本本校的本本本本本本月月月内的本本本本月月月月月的本本本本本本月月月月月的本本本本本本本月月月月月月月的本本本本本本月月月月的本本本本本月月月的本本本本月月月月月月月月的本本本本本本月月月的8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8日日日日日日,本本本本本本本本本本本本本本本本本月月月月月月月月月月的本本本本本本本本本本你的$match将是一系列的结果。去掉最后的第二个条目,也许,如果小马没有踩在你身上,它实际上就是你要找的url。@johncode那么在这种情况下我应该用什么来代替呢?没有办法预测这个提要中出现的单词,我想得到这个链接。谢谢。这是什么意思?你喜欢什么?匹配所有字符,就像*,只是它比较懒-它不是匹配所有可能的字符,而是一次匹配一个字符,直到可以跳转到下一个序列。解析[X]HTML时,必须小心使用贪婪的惰性匹配,以使正则表达式运行最佳!好的,我可以看到区别,如果我想从最后一个链接中获取第三个,我会放什么?我是否可以添加另一个。*?没有,因为这是正则表达式语法的一部分,但是是的。