我正在编写一个 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()
调用和由此产生的复杂性,但考虑到只能通过调用二进制文件来使用功能,我不幸没有选择。