2011-02-09 4 views
2

매개 변수에 '&'자를 포함하는 url이 있습니다. 이제 아약스 호출을해야하지만 서버는 that..so 용액에 예외 ...문자열에있는 "&"를 모두 대체하는 Regex ...

예 ..

url = http://localhost.com/?q=java&industry="IT&web"&location="New-york & Florida" 

가 결과이어야를 26 % 파라미터 '&'를 대체하고 호출을 만드는 것이다

= http://localhost.com/?q=java&industry="IT%26web"&location="New-york %26 Florida" 

답변

1

당신이 문자열로 붙어하고 싶은 경우를 인코딩하려고 :

var url = "http://localhost.com/?q=java&industry=\"IT&web\"&location=\"New-york & Florida\""; 

하나의 옵션입니다 물론,이 일치 가정 (모든 인용 표정을 캡처)을 입력하고 encodeURIComponent을 적용하십시오. 결과는 전체 매개 변수는 따옴표를 포함하여 인코딩하는 데있다 :

두 경우 모두
url = url.replace(/"([^"]*)"/g, function(g0){return g0.replace(/&/g, encodeURIComponent);}); 
> http://localhost.com/?q=java&industry="IT%26web"&location="New-york %26 Florida" 

이 이미와 충돌 할 수 있습니다

url = url.replace(/"[^"]*"/g, encodeURIComponent); 
> http://localhost.com/?q=java&industry=%22IT%26web%22&location=%22New-york%20%26%20Florida%22 

마찬가지로, 당신이 당신이 필요로하는 무엇을 경우에만 앰퍼샌드를 대체 할 수 이스케이프 처리 된 문자가 포함되어 있으므로 가장 좋은 해결책은 URL이 생성되는 소스에서 문제를 해결하는 것입니다.

+0

고맙습니다. .. 잘 작동합니다 .... 감사합니다. –

8

당신은 사용해야합니다

query = encodeURIComponent (query); 
+0

URL에있는 모든 &를 대체 할 필요가 없습니다. ..i는 &를 "&"다음에 '='즉 매개 변수의 값으로 대체하기 만하면됩니다. 내 경우 매개 변수는 산업 및 위치 ... –

+2

전체 URL을 만들기 전에 각 $ _GET 변수에 대해 encodeURIComponent를 사용해야합니다. – bobgubko

+0

처음 UR1에이 패턴이 포함 된 경우 어떻게해야할까요? –

관련 문제