我的文字包含很多单词和链接。我想在其中找到一个特定的链接。我目前使用:
preg_match('/http:\/\/www\.myserver\.com\/.*\.(rar|zip|tar|gz)/',$text,$result)
现在让我说我有这样的文字:
bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla <a href="http://www.myserver.com/test.zip">http://www.myserver.com/somefile.zip</a> bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
预期结果将是:
但脚本将返回:
http://www.myserver.com/test.zip">http://www.myserver.com/somefile.zip
我想我需要告诉它在达到第一个“.zip”之后停止但是......怎么样?
答案 0 :(得分:2)
问题是preg_match
默认为贪婪。这意味着它将匹配尽可能多的字符串。
如果你将?
添加到量词,它会使它变得非贪婪,意味着“停止下一个模式开始的地方”
preg_match('/http:\/\/www\.myserver\.com\/.*?\.(rar|zip|tar|gz)/',$text,$result);
// ----^
另见: