php - 将 unicode URL 转换为 ASCII

标签 php unicode encoding ascii

我正在编写一个 PHP 应用程序,它接受来自用户的 URL,然后通过使用 system() 对二进制文件进行一些调用来处理它。 *。但是,为了避免由此产生的许多复杂情况,我尝试将可能包含 Unicode 字符的 URL 转换为 ASCII 字符。

假设我有以下 URL:

https://täst.de:8118/news/zh-cn/新闻动态/2015/

这里需要处理两部分:主机名和路径。

  • 对于主机名,我可以简单地调用idn_to_ascii() .
  • 但是,我不能简单地调用 urlencode()在路径上,因为每个需要保持不变的字符也将被转换(例如 news/zh-cn/新闻动态/2015/ -> news%2Fzh-cn%2F%E6%96%B0%E9%97%BB%E5%8A%A8%E6%80%81%2F2015%2F 而不是 news/zh-cn/%E6%96%B0%E9%97%BB%E5%8A%A8%E6%80%81/2015/)。

我该如何解决这个问题?


*我不想处理 system()调用和由此产生的复杂性,但考虑到该功能只能通过调用二进制文件使用,很遗憾,我别无选择。

最佳答案

将 URL 拆分为 / 然后 urlencode() 然后将其放回原处

$url = explode("/", $url);
$url[2] = idn_to_ascii($url[2]);
$url[5] = urlencode($url[5]);
$url = join("/", $url);

关于php - 将 unicode URL 转换为 ASCII,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30830553/

相关文章:

java - UTF-8 编码不适用于 Eclipse Java 应用程序

linux - gradle构建时无效的编码名称UTF8

javascript - X 和 Y 坐标的简单笛卡尔平面,原点位于中心

php - 在 zip php 中写入 unicode 文件名(linux 服务器)

Javascript:Unicode 符号选择器(用于将数学符号添加到文本区域)

java - 找不到类 'android.graphics.drawable.RippleDrawable' Unicode 问题?

c - 混合 UTF-16 和 ASCII 字符串

php - 分页和 where 子句

php - 将 ajax 调用获取的数据返回到另一个函数

php - 在 CakePHP 2.x 中创建 Cron 作业