为什么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? (What is a Relative URL?)
答案 0 :(得分:4)
为什么PHP不支持相对URL?
因为它没有相对的基本URL(尽管可以从请求URI计算一个 ...但仅限于HTTP请求触发的PHP脚本)。
...如果它支持fopen
中的相对URI,则它无法支持相对文件路径,因为它们无法区分。
答案 1 :(得分:2)
为什么PHP不支持相对URL?
相对URL支持需要相对URL相对的基本URL。请参阅4.2. Relative Reference in RFC 3986 URI Generic Syntax。
考虑到这一点,有一个可用的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);
答案 2 :(得分:0)
在url中指示此函数所需的协议,它是一个语言结构,指示一个包装器,与链接中的示例不同。
为什么需要以及如何使用可以在php文档php wrappers
中找到