PHP - URL - zunanja ali notranja povezava?
2 naročnika
2 naročnika
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);
}
?>