0

为什么 PHP 不支持相对 URL?

这可以用其他编程语言来完成吗?那服务器端可以微快速检测吗?

$urla="http://cdn.domain.net";
$urlb="//cdn.domain.net";

if(@fopen($urla,"r")){
// I work
}

if(@fopen($urlb,"r")){
// I do not work
}

既然我提到了它,许多主要的 PHP 不能像这样工作,或者由于服务器端的原因我猜不支持 - 也许 C 库中需要修改 CORE PHP?(什么是相对 URL?

4

3 回答 3

4

为什么 PHP 不支持相对 URL?

因为它没有一个相对的基本 URL(尽管可以从请求 URI 计算出来……但仅适用于由 HTTP 请求触发的 PHP 脚本)。

…如果它支持相对 URI,fopen那么它就不能支持相对文件路径,因为它们无法区分。

于 2012-05-30T10:45:08.480 回答
2

为什么 PHP 不支持相对 URL?

相对 URL 支持需要相对 URL 相对的基本 URL。请参见4.2。RFC 3986 URI 通用语法中的相对参考

考虑到这一点,有一个可用的 PHP 库实际上确实支持相对 URL,并且它与fopen. 它被称为Net_URL2

require_once('Net/URL2.php'); # or configure your autoloader

$baseUrl = 'http://cdn.domain.net';

$hrefRelativeOrAbsolute = '//cdn.domain.net';

$baseUrl = new Net_URL2($baseUrl);

$urlAbsolute = (string) $baseUrl->resolve($hrefRelativeOrAbsolute);

参见使用 php domdocument 添加根路径的问题

于 2012-05-30T11:23:29.413 回答
0

此功能所需的 url 中的协议指示,它是一种语言结构,指示包装器,与链接中的示例不同。

为什么需要它以及如何使用可以在 php 文档php wrappers中找到

于 2012-05-30T10:57:39.053 回答