Varlıkları içine görüntülerde boşluk değiştirmek için Regex

5 Cevap php

Ben güçlükle boşluklarla bir görüntü url uyan bir sürü yaşıyorum.

Bunu yapmak gerekir

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

Böyle bir div içine:

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

Here's the thread about that: http://stackoverflow.com/questions/1066697/regex-matching-image-url-with-spaces

Şimdi yukarıdaki regex çalışacak, böylece ilk varlıkları içine boşluk yapmaya karar verdik.

But I'm really having a lot of difficulty doing so. Something like this:

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

Bir boşluk değiştirir, ama tüm geri kalanı hala boşluklar vardır.

Ben, diyor bir regex yazmak gerekiyor http:// ve görüntü uzantısı arasındaki tüm boşlukları yapmak% 20 içine (png | gif | jpg).

Hatta mümkünse eğer, bu noktada, açıkçası emin değilim. Herhangi bir yardım, teşekkür takdir edilmektedir.

Paolo kaçışını çalışılıyor:

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

Ben bunu başka bir yolu PHP serverside kaçmak için, ve PHP ben regex maç zorunda kalmadan dosya adı ile doğrudan karışıklık olabilir.

Ama bildiğim kadarıyla Htmlentities gibi bir şey bildiğiniz gibi alanlarda için geçerli değildir. Bu yönde herhangi bir ipucu da büyük olurdu.

5 Cevap

Eğer değiştirme karakteri kontrol etmek istiyorum ama normal bir ifade, bir basit kullanmak istemiyorsanız ...

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

.. Muhtemelen daha etkili bir çözüm olacaktır.

escape fonksiyonu deneyin:

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

Eğer boşluk içeren bir URL'ye ayarlanır dize değişkeni urlWithSpaces var diyelim.

Sadece gitmek:

urlWithoutSpaces = escape(urlWithSpaces);

Urlencode hakkında () ne - ne istediğinizi yapabilirsiniz.

JS tarafta sadece son çare olarak) (encodeURI() kullanılarak, ve kaçmak gerekir. () EncodeURI kullanmak için neden escape () ISO Latince kullanır iken, kodlama için UTF-8 kullanır. Aynı sorun çözme için de geçerlidir.

encodeURI = encodeURI || escape;

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