2012-03-24 118 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