2013-04-21 100 views
2

我喜歡從html字符串中獲取錨定標記定義中的網址。該html結構相當好,但我試圖收集的字符串包含谷歌地圖的地址,可以是非常不同的。我正在嘗試使用preg_match_all來獲取所有匹配的網址。包含街道地址匹配的regexp achor href網址

<tr><td><a href="http://maps.google.com/maps?q=4165 E LIVE OAK AVE,">map</a></td></tr> 
<tr><td><a href="http://maps.google.com/maps?q=8000 SUNSET BLVD, LOS ANGELES,">map</a></td></tr> 
<tr><td><a href="http://maps.google.com/maps?q=30600 THOUSAND OAKS BLVD, AGOURA,">map</a></td></tr> 
<tr><td><a href="http://maps.google.com/maps?q=9090 19TH ST, ALTA LOMA,">map</a></td></tr> 
<tr><td><a href="http://maps.google.com/maps?q=185 W ALTADENA DR, ALTADENA,">map</a></td></tr> 
<tr><td><a href="http://maps.google.com/maps?q=620 E MOUNT CURVE AVE,">map</a></td></tr> 

回答

1

試試下面的正則表達式:

/http:\/\/maps.google.com\/maps\?q[^"]+(?=")/ 

但頁面可能包含您所呈現的HTML結構以外的相同的URL,那麼最好使用更復雜的正則表達式:

/(?<=<tr><td><a href=")http:\/\/maps.google.com\/maps\?q[^"]+(?=">map<\/a><\/td><\/tr>)/ 
+0

感謝您給我的是我需要縮短之前嘗試使用的所有網址的內容。這是我現在擁有的:
'code' /\b(?:(?:https?|ftp):\/\/|www\.[["]+(?=")/'code' – 2013-04-21 21:17:31