所以我有一堆 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编码。
我尝试使用 urlencode
、rawurlencode
但都没有用。
如有任何帮助,我们将不胜感激!
注意:编码的 url 旨在存储而不是由浏览器显示,因此不能更改 header 。
最佳答案
对于这种情况,您可能希望使用 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
(如果有的话)。
一旦对它们进行了 URL 编码,您将需要重新组合,以便 scheme
(http)、host
(www.abcdefg.com) 不受影响。
如果您仍然希望完整地保留 /
,请在对其进行 URL 编码之前先使用 explode()
path
。
$pathComponents = explode('/', $parsed['path']);
$pathComponents = array_map('urlencode', $pathComponents);
// Assemble back $path
$path = implode('/', $pathComponents);
关于php - 在php中为url编码中文字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11661881/