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 Generic Syntax の相対参照

それを考慮して、実際に相対 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 ラッパーを参照してください。

于 2012-05-30T10:57:39.053 に答える