Allora ragazzi, sto cercando di fare una mod per un altro CMS, simile a quella di vBulletin che utilizza per trasformare i link interni al forum, con il titolo della pagina.
Allora, ho questo due funzioni:
Codice PHP:
function find_url_title($url)
{
$local_url = array(
'http://www.' . $board_config['server_name'] . $board_config['script_path'],
'http://' . $board_config['server_name'] . $board_config['script_path']
);
if (function_exists('create_server_url'))
{
array_merge(array(create_server_url()), $local_url);
}
for($i = 0; $i < count($local_url); $i++)
{
if(strlen($url) > strlen($local_url[$i]) && strpos($url, $local_url[$i]) === 0)
{
$url_local = true;
$url = $url;
}
}
if(!$url_local)
{
if(strpos($url, ':') === false)
{
$url_local = true;
}
}
if(($url[2]== ']') || ($url[2]== '[') || ($url_local === false))
{
return $url[0];
}
else
{
$url[1] = (substr($url[1], 0, 4) === 'http') ? $url[1] : 'http://' . $url[1];
if(eregi("<title>(.+)</title>", @file_get_contents($url[1]), $matches))
{
return '[url=' . $url[1] . ']' . $matches[1] . '[/url]' . $url[2];
}
else
{
return '[url]' . $url[1] . '[/url]' . $url[2];
}
}
}
function url_title($message)
{
$pattern = '#((?:https?://|www\.)(?:[\w\#\$%&~/\\-;:=,\?@\+][\w\#\$%&~/\.\\-;:=,\?@\+]*[\w\#\$%&~/\\-;:=,\?@\+]|[\w\#\$%&~/\\-;:=,\?@\+])\.[a-z]{2,6}(?:[\w\#\$%&~/\.\\-;:=,\?@\+]*))(.|$)#i';
$message = preg_replace_callback($pattern, find_url_title, $message);
return $message;
}
Utilizzando la funzione url_title(), se scrivo il link diretto, me lo trasforma come qui su vB, giustamente, solo che me lo fa per TUTTI i link, anche quelli esterni.
Il controllo per il link interno, viene fatto grazie alla variabile $local_url.
Se il link è interno trasforma il link, altrimenti lascia il link così come è.
Esempio:
Supponiamo che il dominio, quindi un link interno sia:
Codice:
http://forum.it.altervista.org/
Se nel post, scrivo un link che abbia:
Codice:
http://forum.it.altervista.org/
questo viene trasformato con il titolo della pagina, quindi AlterVista | Spazio web gratis, hosting free php mysql.
Se scrivessi invece:
Codice:
http://www.google.it/
questo rimane tale e quale, senza trasformarlo.
Potreste aiutarmi? Avete suggerimenti per migliorare il codice?
Grazie in anticipo