我正在尝试按照http://exämple.se/path
或https://äxämple.se/anotherpath?foo=bar&baf=bas
这样的方式获取 IDN URL,以便我得到它的组件,如下所示:
[0] http(s)://
[1] äxämple.se
[2] /anotherpath?foo=bar&baf=bas
我的第一个想法是“我就用parse_url
!”。好吧,除了它不做 IDN 域,所以没有运气。
接下来我尝试了一堆我自己的正则表达式技巧,但不知何故未能获得任何有用的输出(其中一些工作到一定程度,但仍然痛苦地缺乏。
最后,我尝试了各种其他人的正则表达式模式,但它们似乎都不适合我(正常工作 = 捕获任何有用的东西,一个捕获整个 url 作为它的“协议”部分,我遇到的大多数其他人都没有捕获任何内容或显然在功能上与我尝试过的相同)。
当然,我为什么要这样做?我想idn_to_ascii
在将 URL 重新拼凑在一起并将其存储在数据库中之前在域名上运行。
那么,我在这里做错了什么?我的方法是完全错误的,还是有一些神奇的调用preg_match
可以解决我的问题?
编辑:最好我想要一个不涉及下载其他人编写的代码块的解决方案(比如,一个名为ParseIDNUrl
100kB 的自定义类)