2009-07-02 2 views
0

이미지 URL을 공백으로 채우는 데 많은 어려움이 있습니다. 여기에 대한 스레드의이미지의 공백을 엔티티로 변경하는 정규식

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

:

는이 같은 사업부에이

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

을해야 지금은 먼저하기로 결정했습니다 regex matching image url with spaces

위의 정규식이 작동하도록 엔티티에 공백을 넣으십시오.

하지만 실제로 그렇게하는 데 많은 어려움을 겪고 있습니다. 이 같은 뭔가 :

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

한 공간을 대체하지만, 모든 나머지는 여전히 공간입니다.

http : //와 이미지 확장 (png | jpg | gif) 사이의 모든 공백을 % 20으로 만드는 정규식을 작성해야합니다.

이 시점에서 솔직히 말해서 가능한지 확실하지 않습니다. 감사합니다. 감사합니다.

파올로의 탈출을 시도 :이 작업을 수행 할 수 있습니다

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

또 다른 방법은 PHP에서 서버 쪽을 탈출하는 것입니다, 그리고 PHP에서 내가 필요없이 파일 이름을 직접 엉망이 정규식에 일치하도록 할 수 있습니다.

하지만 htmlentities와 같은 항목은 공백에 적용되지 않습니다. 이 방향의 힌트도 훌륭합니다.

+0

정규식을 호출하는 모든 문자열에서 이스케이프를 호출해야합니다. –

+0

어떤 문자열입니까? 나는 (y) 이미지 URL과 일치해야한다. – Mark

+0

당신은 그것을 무엇과 일치시킬 필요가 있습니까? –

답변

0

을 당신은 대체 문자를 제어하려는하지만, 정규 표현식, 간단한을 사용하지 않으려면 ...

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

아마 수 ..would 더 효율적인 솔루션.

+0

이것은 나를 위해 일한 것입니다, 감사합니다. % 20으로 바 꾸었습니다. – Mark

4

escape 기능을 시도해보십시오

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

는 공백이 포함 된 URL로 설정 urlWithSpaces 변수 문자열을 가지고 있다고 할 수 있습니다.

단순히 이동 :

urlWithoutSpaces = escape(urlWithSpaces); 
+0

문제는 클라이언트 쪽에서 뭔가를 할 때까지는 URL이 사용자가 제출 한 게시물의 일부가되므로 먼저 일치시켜야합니다. – Mark

0

원하는대로 할 수있는 urlencode()는 어떻습니까?

+0

아, 그리고 공간 인코딩을 사용하면 rawurlencode()가 더 적절할 수 있습니다. – Meep3D

+0

아, PHP도 있습니다. – Meep3D

+0

너무 많이 인코딩 했음에도 불구하고 많이 고마워요. '/'가 % 2F가되면 URL은 작동을 거부합니다. – Mark

0

JS 측에서는 encodeURI()을 사용하고 대체품으로 만 이스케이프()를 사용해야합니다. encodeURI()를 사용하는 이유는 인코딩에 UTF-8을 사용하는 반면 escape()는 ISO Latin을 사용하기 때문입니다. 동일한 문제가 디코딩에 적용됩니다.

encodeURI = encodeURI || escape; 

alert(encodeURI('image name.png')); 
관련 문제