2012-03-24 178 views
1

我想从网站中提取特定的链接。PHP:使用preg_match_all()获取特定链接

的链接看起来像:

<a href="1494761,offer-mercedes-used.html"> 

的联系始终是相同的 - 除了名优产品(在这种情况下,奔驰)。

这工作得很好,但迄今为止仅提供链接的第一部分:

preg_match_all('/((\d{7}),offer-)/s',$inhalt,$results);

这与提供整个网站的第一个链接:(

preg_match_all('/((\d{7}).*html)/s',$inhalt,$results);

任何想法?

请注意,我使用preg_match_all()而不是preg_match()。

感谢, 查马

回答

1

虽然.*?会做(=贪心不足),在这两种情况下,你应该指定一个更精确的图案。

这里[\w.-]+会做。但是如果HTML源是一致的(或者您特别希望忽略其他变体),则[^">]+也可能是可行的。

preg_match_all('/((\d{7}),offer-[\w.-])/s',$inhalt,$results); 
1

试图解析XML/HTML与正则表达式通常不是一个好主意,但如果你相信它会始终得到很好的格式,这应该返回内容的任何链接。

/<a href="([^">]+)">/ 

这将更加紧密地匹配只有你给的例子模式,但不知道你可能有什么变化

/<a href="([0-9]{7},offer-[a-z]+-used\.html)">/ 
// [7 numbers],offer-[at least one letter]-used.html