yggverse
8 months ago
1 changed files with 43 additions and 0 deletions
@ -0,0 +1,43 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
declare(strict_types=1); |
||||||
|
|
||||||
|
namespace Yggverse\YoTools; |
||||||
|
|
||||||
|
class Link |
||||||
|
{ |
||||||
|
public static function relative2absolute( |
||||||
|
string $source, // current document url to grab the base |
||||||
|
string $target, // relative or absolute link |
||||||
|
?string &$scheme = null, |
||||||
|
?string &$host = null, |
||||||
|
?int &$port = null |
||||||
|
): string |
||||||
|
{ |
||||||
|
if (!parse_url($target, PHP_URL_HOST)) |
||||||
|
{ |
||||||
|
$scheme = parse_url($base, PHP_URL_SCHEME); |
||||||
|
$host = parse_url($base, PHP_URL_HOST); |
||||||
|
$port = parse_url($base, PHP_URL_PORT); |
||||||
|
|
||||||
|
return $scheme . '://' . $host . ($port ? ':' . $port : null) . |
||||||
|
'/' . |
||||||
|
trim( |
||||||
|
ltrim( |
||||||
|
str_replace( |
||||||
|
[ |
||||||
|
'./', |
||||||
|
'../' |
||||||
|
], |
||||||
|
'', |
||||||
|
$target |
||||||
|
), |
||||||
|
'/' |
||||||
|
), |
||||||
|
'.' |
||||||
|
); |
||||||
|
} |
||||||
|
|
||||||
|
return $target; |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue