Resolvi criar uma função que transformasse em links URLs de um texto.
Se a URL for muito grande, a função também a reduz.
código da função
<?php
#############################################
# #
# Autor: Roberto Beraldo Chaiben (Beraldo) #
# E-Mail: rbchaiben[arroba]gmail.com #
# #
#############################################
/*
string MontarLink (string texto)
A função MontarLink() transforma em links as URLs iniciadas por 'http://' contidas no argumento 'texto'.
Se a URL tiver mais que 60 caracteres, serão exibidos os 25 primeiros, seguidos de reticências (...) e os últimos 15.
Se 'texto' não for uma string, a função retorna FALSE.
IMPORTANTE: Se o link se iniciar por 'www' e não tiver 'http://', a função nào surtirá efeito.
*/
function MontarLink ($texto)
{
if (!is_string ($texto))
return false;
$er = "/http:\/\/(www\.|.*?\/)?([a-zA-Z0-9]+|_|-)+(\.(([0-9a-zA-Z]|-|_|\/|\?|=|&)+))+/i";
preg_match_all ($er, $texto, $match);
foreach ($match[0] as $link)
{
$link = strtolower ($link);
if (strstr ($link, "http://") === false)
$link = "http://" . $link;
$link_len = strlen ($link);
//troca "&" por "&", tornando o link válido pela W3C
$web_link = str_replace ("&", "&", $link);
$texto = str_ireplace ($link, "<a href=\"" . $web_link . "\" target=\"_blank\">". (($link_len > 60) ? substr ($web_link, 0, 25). "...". substr ($web_link, -15) : $link) ."</a>", $texto);
}
return $texto;
}
Um exemplo de como funciona:
$a = "O link http://www.Trova.Di.danu é Metal! http://www.Tuatha.de.danann também é metal!";
echo "<p>" . MontarLink ($a) . "</p>\r\n";
$b = "O link http://www.master.of.puppets.that.should.not.be/index.php?id=7&x=y parece interessante.";
echo "<p>" . MontarLink ($b) . "</p>\r\n";
$c = "O link http://www.MetropolisPt2.Scenes.from.a.memory/regression/Overture1928 também parece ótimo";
echo "<p>" . MontarLink ($c) . "</p>\r\n";
Pergunta
Beraldo
Saudações, pessoal! :)
Resolvi criar uma função que transformasse em links URLs de um texto.
Se a URL for muito grande, a função também a reduz.
código da função
Um exemplo de como funciona:Abraços
Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.