gpt4 book ai didi

php - 在 PHP 中拆分 IDN URL

转载 作者:行者123 更新时间:2023-12-04 05:44:39 24 4
gpt4 key购买 nike

我正在尝试使用 http://exämple.se/path 的 IDN URL。或 https://äxämple.se/anotherpath?foo=bar&baf=bas这样我就可以像这样得到它的组件:

[0] http(s)://
[1] äxämple.se
[2] /anotherpath?foo=bar&baf=bas

我的第一个想法是“我将只使用 parse_url !”。好吧,除了它不做 IDN 域,所以没有运气。

接下来我尝试了一堆我自己的正则表达式技巧,但不知何故未能获得任何有用的输出(其中一些工作到一定程度,但仍然痛苦地缺乏。

最后,我尝试了各种其他人的正则表达式模式,但它们似乎都不适合我(正常工作 = 捕获任何有用的东西,一个捕获整个 url 作为它的“协议(protocol)”部分,我遇到的大多数其他人都没有捕获任何内容或显然在功能上与我尝试过的相同)。

当然,我为什么要这样做?我要跑 idn_to_ascii在将 URL 拼凑在一起并将其存储在数据库中之前,在域名上。

那么,我在这里做错了什么?我的方法是完全错误的还是有一些对 preg_match 的神奇调用?这将解决我的问题?

编辑:最好我想要一个不涉及下载其他人编写的代码块的解决方案(比如,一个名为 ParseIDNUrl 的自定义类,大小为 100kB)

最佳答案

parse_url应该可以正常工作。使用 PHP 5.3.4 我已经能够只提取域部分:

print parse_url('http://äxämple.se/foobar', PHP_URL_HOST);

也许您需要调整编码:
print utf8_decode(parse_url('http://äxämple.se/foobar', PHP_URL_HOST));

我得到的输出是:
äxämple.se

希望有帮助!

关于php - 在 PHP 中拆分 IDN URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10837654/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com