2013-08-07 66 views
0

我怎麼會做出regex從那裏我匹配的url從網頁提取的URL與正則表達式在PHP

例如我的網址的中央部分匹配將是這樣一個頁面中提取urls

http://m2.imageserver.net/media/thumb/66177422433.jpg http://m4.imageserver.net/media/thumb/21717623342.jpg http://m1.imageserver.net/media/thumb/12327722433.jpg

而且我想只是URL作爲子域可以改變的imageserver.net/media部分匹配。

+0

他們是鏈接還是純文本? – zerkms

+0

'strpos($ haystack,$ needle)'似乎是一個更簡單的方法 – Raptor

+0

比什麼更好?你爲什麼覺得有一個瀏覽器應用程序? – zerkms

回答

1

您的正則表達式將是http://[a-zA-Z0-9]+.imageserver.net+[a-zA-Z0-9/]+.jpg

建議:在嘗試使用代碼之前,請使用regexpal進行檢查。它基本上是一個JavaScript正則表達式測試器。

更新:添加一個分隔符:

$match_pattern = "#http:\/\/[a-zA-Z0-9]+.imageserver.net+[a-zA-Z0-9\/]+.jpg#"; 
preg_match_all($match_pattern,$string_to_be_matched,$url_array); 
+0

這給了我一個:'警告:preg_match_all():分隔符不能是在/Users/user/Dropbox/localhost/PHPCrawl_081/test.php在行61 ' – ian

+0

@ian:如何添加分隔符的字母數字或反斜槓?你有沒有研究如何在PHP中使用正則表達式? – zerkms

+0

@感謝偉大的作品! – ian

0

我嘗試這一個給你。也許它可以幫助你。

$text = "http://m2.imageserver.net/media/thumb/66177422433.jpg"; 

$text = preg_match("/imageserver.net\/media/", $text, $match); 

print_r($match); 

如果我完全理解你的問題,這可能是答案。

+0

'$ match'數組將會是一串''imageserver.net/media''字符串 – zerkms

+0

是的,但是如果輸出$文本,那麼它顯示1或者如果匹配的話就顯示爲true。 – shark

+0

再次閱讀該問題 - OP需要提取網址 – zerkms

0

我不使用正則表達式,但我認爲這可能工作。

$string = "jjYy5nhttp://m2.imageserver.net/media/thumb/66177422433.jpgru56rtjr"; 

    $pattern = "/http:\/\/[^0-9a-zA-Z_ -].imageserver.net\/media\/(.*?).jpg/"; 
    if (@preg_match_all(${pattern}, ${string}, $matches)) { 
     print $matches['0']; 
    }