mirror of
https://github.com/YGGverse/yo-tools-php.git
synced 2025-02-06 12:04:24 +00:00
implement Link class
This commit is contained in:
parent
3622e0d67f
commit
d8045c1d9b
43
src/Link.php
Normal file
43
src/Link.php
Normal file
@ -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…
x
Reference in New Issue
Block a user