基本的に、次のようなベースURLが与えられます
file:///path/to/some/file.html
そして、次のような相対 URL
another_file.php?id=5
出たい
file:///path/to/some/another_file.php?id=5
このスクリプト(これはこれと同じです)を見つけましたが、file://
スキームでは機能しないようです。file://
コードを公開する前にいくつかのローカル テストを行っているので、 と の両方に取り組みたいと思いhttp://
ます。
これを行うスクリプト/関数を知っている人はいますか?
C# では、Uri(Uri base, string rel)を使用します。
上記はほんの一例です。にスローできるすべてのURL で動作するはずです<a href="xxx">
。
これは私がこれまでに得た中で最高..
のものですが、おそらく他のいくつかのことを処理できません:
function rel2abs($base, $rel) {
if (parse_url($rel, PHP_URL_SCHEME) != '') return $rel;
if ($rel[0]=='#' || $rel[0]=='?') return $base.$rel;
$parse = parse_url($base);
$path = preg_replace('#/[^/]*$#', '', $parse['path']);
if ($rel[0] == '/') $path = '';
$abs = (isset($path['host'])?$path['host']:'')."$path/$rel";
$re = array('#(/\.?/)#', '#/(?!\.\.)[^/]+/\.\./#');
for($n=1; $n>0; $abs=preg_replace($re, '/', $abs, -1, $n)) {}
return $parse['scheme'].'://'.$abs;
}