2009-07-02 37 views
0

我在使用空格匹配圖像url時遇到了很多困難。正則表達式將圖像中的空格變爲實體

我需要這個

http://site.com/site.com/files/images/img 2 (5).jpg 

到這樣一個div:

.replace(/(http:\/\/([^\s]+\.(jpg|png|gif)))/ig, "<div style=\"background: url($1)\"></div>") 

下面是關於該線程: regex matching image url with spaces

現在我決定先進行將空格轉換爲實體,以便上述正則表達式可以工作。

但是我真的有很多困難這樣做。 事情是這樣的:

.replace(/http:\/\/(.*)\/([^\<\>?:;]*?) ([^\<\>?:;]*)(\.(jpe?g|png|gif))/ig, "http://$1/$2%20$3$4") 

替換一個空間,可是其餘的仍是空格。

我需要編寫一個正則表達式,將http://和圖像擴展名(png | jpg | gif)之間的所有空格放入%20。

在這一點上,坦率地說不知道是否有可能。任何幫助表示讚賞,謝謝。

試圖Paolo的逃生:

.escape(/http:\/\/(.*)\/([^\<\>?:;]*?) ([^\<\>?:;]*)(\.(jpe?g|png|gif))/) 

另一種方式,我可以做到這一點是在PHP中逃脫服務器端,並在PHP我可以用文件名直接一塌糊塗,而無需在正則表達式匹配。

但據我所知,類似htmlentities的東西不適用於空格。這個方向的任何提示都會很棒。

+0

你必須調用轉義的任何字符串你打電話給正則表達式... – 2009-07-02 04:08:20

+0

什麼字符串?我需要匹配(y)圖片網址。 – Mark 2009-07-02 04:35:57

+0

你需要將它與什麼相匹配? – 2009-07-02 05:20:38

回答

0

如果你想控制的替代字符,但不希望使用正則表達式,一個簡單的...

$destName = str_replace(' ', '-', $sourceName); 

可能..would是更有效的解決方案。

4

嘗試escape功能:

>>> escape("test you"); 
test%20you 
0

比方說你有字符串變量urlWithSpaces它被設置爲包含空格的URL。

只需進入:

urlWithoutSpaces = escape(urlWithSpaces); 
+0

問題是,當我開始在客戶端做些什麼時,url會成爲用戶提交的帖子的一部分,所以我必須首先匹配它。 – Mark 2009-07-02 18:23:08

0

urlencode()怎麼樣 - 可以做你想做的。

0

在JS方面,你應該使用encodeURI(),並使用escape()作爲後備。使用encodeURI()的原因是它使用UTF-8編碼,而escape()使用ISO Latin。同樣的問題適用於解碼。

encodeURI = encodeURI || escape; 

alert(encodeURI('image name.png'));