2014-02-11 75 views
0

字符串只圖像的URL我有一個非常複雜的字符串,我想查找和替換,與爲.jpg,.png或.gif與靜態URL結尾的所有URL。例如;正則表達式:查找與PHP

$string = "Lorem ipsum dolor sit amet, http://www.website.com/images/some.jpg; consul delicata comprehensam eos at. Mea rebum laudem deterruisset et, ex epicuri constituto his. Sea ad appareat democritum. http://www.anotherwebsite.com/images/some.png Omnis vituperata dissentiunt an duo. Sumo diceret lobortis at sed, singulis aliquando prodesset ex sit."; 

$regex = ?; 
$static_image_url= "http://new_image_url"; 

return preg_replace($regex, $static_image_url, $string); 

請注意,這個字符串可能比這更復雜,網址是動態的,這不是HTML。

非常感謝您提前。

最好的問候,

編輯:

這種情況這一次的工作;

return preg_replace('/https?:\/\/[^ ]+?(?:\.jpg|\.png|\.gif)/', $static_image_url, $string); 
+0

是的,那麼你有什麼嘗試? –

+0

我在哪裏!研究並嘗試編輯這一個,但沒有運氣http://stackoverflow.com/questions/7461922/just-get-the-image-url-from-string-in-php – user3213174

+0

嘗試這樣的事情入手:HTTP: //regex101.com/r/nX1sN3 –

回答

1

這應該更換鏈接只要他們沒有在他們的空間(因爲鏈接顯然不能有空格)。

$string = "Lorem ipsum dolor sit amet, http://www.website.com/images/some.jpg; consul delicata comprehensam eos at. Mea rebum laudem deterruisset et, ex epicuri constituto his. Sea ad appareat democritum. http://www.anotherwebsite.com/images/some.png Omnis vituperata dissentiunt an duo. Sumo diceret lobortis at sed, singulis aliquando prodesset ex sit."; 
$static_image_url= "http://new_image_url"; 
return preg_replace('/https?:\/\/[^ ]+?(?:\.jpg|\.png|\.gif)/', $static_image_url, $string); 
+0

謝謝。我發現了一個非常好的工作。但你的看法很詳細。 – user3213174

+0

你的問題是它沒有做它應該做的。例如,它取代了「htt:// test.jpg」和「http://www.the link.jpg」,歡迎您。 – Anonymous

+0

是的,你絕對會更好! – user3213174

0

爲了弄清楚正則表達式,使用在線工具來測試你的字符串。

http://www.regextester.com

因爲在你的榜樣字符串所有的鏈接均以「http://」我們可以開始我們的這種模式。我們知道,它們將以文件類型(jpg,png)的擴展以及兩者之間的整個混亂結束。

http:\/\/.+?(\.jpg|\.png|\.gif) 

使用.+將匹配任何東西,追加?使得ungreedy。否則,我們將獲得從第一個鏈接開始到最後一個結束的所有內容。

警告此正則表達式是根據你的榜樣字符串。如果鏈接是「www.someplace.com/someimage.jpg」,它會不匹配

+0

這會錯誤地替換諸如「http:// www.website.com/images/somejpg」之類的鏈接。另外,你忘了'.gif'。 – Anonymous

+0

謝謝你的回答,這個也適用。 – user3213174