php - 在php中为url编码中文字符

标签 php encoding utf-8 decoding

所以我有一堆 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 旨在存储而不是由浏览器显示,因此不能更改 header 。

最佳答案

对于这种情况,您可能希望使用 parse_url()分隔 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 编码之前先使用 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/

相关文章:

php - 将整个网站从左到右对齐-从英语翻译成希伯来语

java - 解析 XML 文件时出现异常

php - 使用 php 以 UTF-8 格式导出到 CSV for Excel

php - Codeigniter 表单验证(mysql校验)

php - Undefined offset : -1 ErrorException thrown from phpseclib when trying to connect to remote server?是什么意思

php - 警告 : mysqli_connect(): MySQL server has gone away

c++使用iconv从UTF-8转换为wstring

php - 知道 youtube 使用的是什么视频编码技术吗?

c# - 在 C# .NET 中编码非 ascii 字符

c++ - 在 C++ 中获取正确编码的字符串