PHP - URL - zunanja ali notranja povezava?

Imam eno funkcijo v php-ju, ki preveri ali se v tekstu nahaja povezava in če se, ji doda html a href...

Želel bi pa preveriti ali je to zunanja povezava na drug spletni naslov ali je notranja.

Ima kdo kakšno idejo?

function parse_urls($text, $target = '_self')
{
    if (preg_match_all('/((ht|f)tps?:\/\/([\w\.]+\.)?[\w-]+(\.[a-zA-Z]{2,4})?[^\s\r\n\(\)"\'<>\,\!]+)/si', $text, $urls))
    {
        foreach (array_unique($urls[1]) AS $url)
        {
            $text = str_replace($url, '<a href="'. $url .'" target="'. $target .'" title="'. $url .'">'. $url .'</a>', $text);
        }
    }
    return $text;
}

2 odgovora

Zakaj ne uporabljaš DomDocument, potem greš čez vse linke in rečeš $link->getAttribute('target') == 'blank' ....?

Nisem se nikoli poglabljal v DomDocument...

V mojem primeru se gre, da bi vse zunanje povezave na strani redirectal preko kakšne preproste php skripte, ampak samo v primeru ko je povezava zunanja.

Do sedaj sem naredil nekaj takega:

<?php

$url = $_GET["u"];

if(!isValidURL($url)) {
    echo "Please enter valid URL including http://";
} else {
    header("Location: ".$url."");
}
exit;

function isValidURL($url) {
    return preg_match('|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|i', $url);
}
?>