2012-07-14 94 views
0

我使用CSV導入工具,並做了一些研究,以獲取導出結果中的url,因爲它具有特定的導入語法。抓取網址直到具體的詞

這是一個導入文本的例子。

... IMG SRC = 「MULTIFEED_START_7_http://www.suppliertestcase.com/423_1.jpgMULTIFEED_END_7_」

所以我想抓住圖像的URL是文本MULTIFEED_START_7_之間(可能是6或5 ,...也)和文本MULTIFEED_END_7(同樣可以是6或5,...)

經過一些測試想通了,它工作正常:

preg_match_all('#(HTTP:// (。*)。(gif | png | jpg))#i',$ post [0] - > post_content,$ matches);

正確地獲取所有的URL,如果它以.jpg結尾,gif或png格式

輸出爲http://www.suppliertestcase.com/423_1.jpg

可是...現在我的問題。

某些供應商在導入時不會提供.jpg或.gif擴展名的產品照片網址。 他們只是給FE這個URL(只目錄的URL沒有文件擴展名):

IMG SRC = 「MULTIFEED_START_7_http://www.suppliertestcase.com/productphoto/MULTIFEED_END_7_」

所以grep的輸出應該是http://www.suppliertestcase.com/productphoto/ 我如何抓取以http://開頭並且在MULTIFEED_END文本前的所有內容?

回答

0
preg_match_all('~(?<=(MULTIFEED_START_\d_))(.+)(?=(MULTIFEED_END_\d_))~',$src,$matches); 

試試這個。

+0

嗨Mohammer,謝謝你的回覆。 我用$ src替換爲$ post [0] - > post_content,但它不起作用。 但是,如何定義MULTIFEED_END _...結束語對我來說是一個很好的提示。我會嘗試幾個與我使用的原始grep的組合,它可以與.jpg,.gif或.png一起使用,在末尾 preg_match_all('#(http://(。*)。(gif | png | jpg)) #i',$ post [0] - > post_content,$ matches); – Dan 2012-07-15 03:12:45

+0

很奇怪。我再次測試它,它爲我工作...對不起! – Mohammer 2012-07-15 16:36:53

+0

無論如何感謝穆罕默德。 只要圖像擴展名存在,preg作品就完美無缺。 ('#(http:\/\ /(。*)\。(gif | png | jpg))#i',$ post [0] - > post_content,$ matches); 抓取從http://部分開始的所有內容,直到它檢測到.jpg或.gif或.png(包含在outpot結果中的.jpg或.gif或.png) 我嘗試了幾個組合,分別是工作preg_match_all的開始部分和你的(?=(MULTIFEED_END_ \ d_)定義來檢測MULTIFEED_END文本,但此時沒有任何結果 – Dan 2012-07-15 17:22:46