我想从网站中提取特定链接。
链接看起来像这样:
<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()。
谢谢, 查马
答案 0 :(得分:1)
虽然.*?
可以做(=少贪心),但在这两种情况下都应指定更精确的模式。
这里[\w.-]+
会这样做。但是,如果HTML源代码一致(或者您特别希望忽略其他变体),[^">]+
也可能是可行的。
preg_match_all('/((\d{7}),offer-[\w.-])/s',$inhalt,$results);
答案 1 :(得分:1)
尝试使用正则表达式解析xml / html通常不是一个好主意,但是如果你确定它的格式总是很好,那么这应该返回内容中的任何链接。
/<a href="([^">]+)">/
这将更贴切地匹配您提供的示例模式,但不确定您可能具有哪些变体
/<a href="([0-9]{7},offer-[a-z]+-used\.html)">/
// [7 numbers],offer-[at least one letter]-used.html