2012-06-07 67 views
2
$update = ' sometext http://www.site1.com/images/some image with spaces.jpg some other text http://www.site2.com/some_image.jpg'; 

preg_match_all('#(?:<\>]+href=\")?(?:http://)?(http(s?)://([^\s]*)\.(jpg|gif|png))#',  $update, $group_imagelink); 
echo $group_imagelink[1][0]; 
echo $group_imagelink[1][1]; 

我的正則表達式不希望從文本與空格中提取鏈接。 我需要在copy()之後替換20%鏈接中的空格,但我仍然希望使用空格保留文本。我怎樣才能做到這一點?匹配圖像鏈接包含空格

此外,我的代碼是否安全,如http://www.myserver.com/virus.exe#fakeParam=.jpg

+1

空間根本就不是一個URL有效...您的用戶不應該把他們在第一位,並期待它的工作,如果這確實是你從中獲取文本的地方。 – Ryan

+1

您想通過哪些標準區分那些(無效的)太空網址的文本?你可以用'。*?'代替'[^ \ s]'來替代正則表達式,但是這會爲URL打開另外一個問題,它會以'.jpg'後綴運行到下一個。 – mario

+0

非常感謝mario,它幫助了我(。*?),對於url也沒問題,因爲我更改了路徑和名稱。 – devcline

回答

0

這是對我工作:

我更換

[^\s]* 

.*?