3

だから私はたくさんのURLを持っていて、それらのいくつかはこのようにそれらの中に漢字を持っています: http://www.abcdefg.com/ad2/zh/profile/2169358/1/冰绿茶/

ただし、これらすべてのURLを処理し、漢字を含む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でエンコードする必要があります。

を使ってみましたがurlencoderawurlencodeうまくいきませんでした。

どんな助けでも大歓迎です!

注:エンコードされたURLは、ブラウザーに表示されずに保存されることを意図しているため、ヘッダーを変更することはできません。

4

1 に答える 1

2

この場合、parse_url()URLコンポーネントとurlencode()pathおよびqueryコンポーネントのみを分離するために使用することをお勧めします。

$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() pathそしてquery(もしあれば)。

schemeそれらがURLエンコードされたら、 (http)、host(www.abcdefg.com)が影響を受けないように、再アセンブルする必要があります。

それでもその/ままにしておきたい場合は、URLエンコードする前explode()path最初の方法です。

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

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

// Assemble back $path
$path = implode('/', $pathComponents);
于 2012-07-26T03:43:22.960 に答える