2011-01-21 9 views
15

"+"기호를 "% 2B"의 urlencoded 문자열로 대체하는 데 문제가 있습니다. 어떻게해야합니까?"+"더하기 기호를 "% 2B"의 해당 URL 인코딩으로 대체하려면 어떻게해야합니까?

텍스트는 텍스트 상자에 입력 한 :

내가 무엇을 시도했다입니다

plus(+) 

나는 그 캐릭터를 urlencode :

:

$string = urlencode($string); 

문자열이 지금처럼 보인다

plus%28+%29 

나는 "+"urlencoded를 갖고 싶어, 그렇지 않으면 내가 브라우저에 표시) (데이터를 URLDECODE 때 나는 끝낼 : URLDECODE()는이 "+"공백으로 해석하기 때문에

plus() 

.

$new_string = str_replace('+', '%2B', $string); 

어떤 아이디어 :

내가 PHP의 않는 str_replace()를 사용하여 시도하지만 난 "NULL을"점점 계속은 "$의 new_string"의 값으로 반환?

미리 감사드립니다.

+1

나를 위해'urlencode ($ string)'echos'plus % 28 % 2B % 29' 사용. –

답변

33

이상합니다. urlencodeplus(+)에 입력하면 plus%28%2B%29이됩니다. 올바르게 사용하고 있는지 확인하십시오.

rawurlencode을 사용해 볼 수도 있습니다. 공백을 + 대신 %20으로 인코딩합니다.

+10

++ PHP 매뉴얼 페이지 (http://php.net/manual/en/function.urlencode.php)의 주석에서 : "텍스트에 전자 메일 주소가 포함되어 있으면 urlencode() 또는 urldecode()를 사용하지 마십시오 "+"문자를 완벽하게 유효한 전자 메일 주소 문자로 파괴하므로 전자 메일 주소를 인코딩하지 않고 비표준 "+"사용법에서 제공하는 가독성을 필요로하지 않는 한 항상 "+"문자를 사용하십시오. rawurlencode() 또는 rawurldecode()를 사용하십시오. " – John

관련 문제