2012-08-23 3 views
8

API 중 하나에서 처리하려면 인코딩 된 URL이 필요합니다. 그러나 예를 들어 전체 인코딩 된 URLPHP에서 하이픈 (-) 및 점 (.)을 포함한 URL 인코딩

이 필요합니다

URL

http://test.site-raj.co/999999?lpp=1&px2=IjN 

에서 인코딩 된 URL에

http%3a%2f%test%site%2draj%2eco%2f999999%3flpp%3d1%26px2%3dIjN 

내가 다른 모든 기호는 심지어 점을 인코딩 할 필요가 아래처럼 (.)와 하이픈 (-)을 사용하십시오. 나에게 PHP/코드의 기능을 알려주십시오.

감사합니다.

+0

귀하의 예는 –

+1

은 그래서에는 하이픈이 없다? @MikeB – 11684

+3

@ 11684 하이픈이 번역 될 것으로 기대되는 것을 알아야합니다. 도트와 마찬가지로. 그는 예상 출력에서 ​​퍼센트 기호로 대체했습니다. –

답변

14

시도해보십시오. 함수를 두 번 이상 사용하면 ...

$str = 'http://test.site.co/999999?lpp=1&p---x2=IjN'; 
$str = urlencode($str); 
$str = str_replace('.', '%2E', $str); 
$str = str_replace('-', '%2D', $str); 
echo $str; 
+0

나중에 괜찮습니까?하지만 다른 특수 문자가 있으면 어떻게 할 것인가? –

8

일반 문자 또는 숫자가 아닌 모든 문자가 인코딩됩니다. 당신은 여전히 ​​표준 URLDECODE 또는 rawurldecode과이를 디코딩 할 수 있습니다

function urlencodeall($x) { 
    $out = ''; 
    for ($i = 0; isset($x[$i]); $i++) { 
     $c = $x[$i]; 
     if (!ctype_alnum($c)) $c = '%' . sprintf('%02X', ord($c)); 
     $out .= $c; 
    } 
    return $out; 
} 
-3

왜 당신은 예를 들어

rawurlencode 사용하지 않는 rawurlencode("http://test.site-raj.co/999999?lpp=1&px2=IjN")

+3

http://www.php.net/rawurlencode says'-_. ~'를 제외한 영숫자가 아닌 모든 문자가 백분율 (%) 부호 다음에 두 자리의 16 진수로 대체 된 문자열을 반환합니다. 그것은 OP가 요구 한 것이 아닙니다. –