2012-07-26 6 views
3

그래서 나는 URL을의 무리와 그들 중 일부는이처럼 중국 문자가 있습니다 중국어 문자를 다음과 같이 입력하십시오 : http://www.abcdefg.com/ad2/zh/profile/2169358/1/%E4%BA%8C%E4%B8%8D%E4%BA%8C%E7%9A%84%E4%BA%8C/PHP에서 URL에 대한 중국어 문자를 인코딩

그래서 중국어 부분은 PHP로 인코딩되어야합니다.

urlencode, rawurlencode을 사용해 보았지만 아무 것도 작동하지 않았습니다.

도움이 될 것입니다.

참고 : 인코딩 된 URL은 브라우저에 표시되지 않도록 저장되므로 헤더를 변경하는 것은 옵션이 아닙니다.

+0

죄송합니다. 인코딩 된 URL은 브라우저에서 표시되지 않으므로 헤더를 변경해도 작동하지 않습니다. – Draco

+0

코드 예제를 보여줄 수 있습니까? 원래 URL이 어디서 왔는지는 분명하지 않습니다. –

+0

원본 URL은 파일에 저장되므로 표시 할 항목이 너무 많지 않습니다. 난 그냥 그들을 처리하고 인코딩 된 URL을 저장 싶어요. – Draco

답변

2

이 경우 URL 구성 요소를 분리 할 때 parse_url()을 사용하고 urlencode()pathquery 구성 요소 만 사용할 수 있습니다.

$url = 'http://www.abcdefg.com/ad2/zh/profile/2169358/1/冰绿茶/'; 
$parsed = parse_url($url); 

print_r($parsed); 

당신은 얻을 것

Array 
(
    [scheme] => http 
    [host] => www.abcdefg.com 
    [path] => /ad2/zh/profile/2169358/1/冰绿茶 
) 

때문에, urlencode()pathquery (있는 경우).

URL 인코딩 된 후에는 scheme (http), host (www.abcdefg.com)이 영향을받지 않도록 다시 조립해야합니다.

여전히 /을 그대로 유지하려는 경우 URL 인코딩하기 전에 path을 먼저 사용하는 것이 좋습니다.

$pathComponents = explode('/', $parsed['path']); 

$pathComponents = array_map('urlencode', $pathComponents); 

// Assemble back $path 
$path = implode('/', $pathComponents); 
+0

그래서이 방법도 시도했지만 urlecode는 또한 '/'을 인코딩합니다. 이것은 원하는 것이 아닙니다. – Draco

+0

다른 단계를 'url_parse()','explode()'에 먼저 추가하십시오. – uzyn

+0

감사는 매력처럼 작동합니다! – Draco

관련 문제