Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá!
Eu tenho comentários em que os usuários postam os links digitando a url completa tipo:
>
Visite meu blog! http://www.site.com Lá tem várias coisas legais.
O problema é que esse link não é clicável. O usuário tem que ter o giganorme trabalho de selecionar, copiar, apertar CTRL+L e colar caso queira visitar a página.
Como posso usar uma função ou classe para tornar esses links em um link html clicável?
Abraços.
EDIT------->
O iMasters linkou o texto!
o dessa postagem só linka a primeira parte do Link. Se for www.exemplo.com/casa ele só linka www.exemplo.com (o /casa fica de fora.)
O código que tenho eté agora:
preg_replace('/((http:\/\/)?(www.)?[\w]{2,}(\.)[a-z]{2,3}(\.[a-z]{2})?)/', '<a href="$1" target="_blank">$1</a>', $var);
Acrescenta mais o não branco \S, assim a vai pegar tudo até antes de um espaço em branco
((http:\/\/)?(www.)?[\w]{2,}(\.)[a-z]{2,3}(\.[a-z]{2})?(\S*)?)
;)
beleza!
mas tem uma coisa: como esse código é processado dentro de um loop, se não tiver um link no texto ele vai perder tempo procurando por nada?
Passe um array e o retorno também será um array.
<?php
$string = array(
'Lorem ipsum dolor sit amet, consectetur http://meusite.org/index.php?page=rent adipiscing elit.',
'Donec ut mauris a augue volutpat sodales. Nulla quis arcu nisi, quis mollis purus. Donec nunc magna, auctor eget aliquam id, luctus non purus. Aliquam placerat commodo iaculis. Nam pharetra condimentum http://www.meusite.com.br/alguma+coisa+aqui/rent/index.php nisl non commodo.',
'Suspendisse pretium laoreet diam, et dictum www.meusite.com.br/modulo/class.php?r=uu&i=rjusto adipiscing id. Sed ac diam dui. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nunc ornare neque id magna laoreet tempus.',
'Pellentesque metus www.meusite.com massa, tincidunt et laoreet eget, placerat sit amet eros. Proin sit amet magna ante. Aenean sed tortor et ante lacinia convallis at in justo. Maecenas pulvinar metus sit http://meusite.org amet urna euismod sed interdum neque porttitor.'
);
$result = preg_replace('/((http:\/\/)?(www.)?[\w]{2,}(\.)[a-z]{2,3}(\.[a-z]{2})?(\S*)?)/', '<a href="$1" target="_blank">$1</a>', $string);
array_map(function($value){ echo $value;}, $result);
?>
Existe um tópico bem recente quanto a este assunto.
visite: http://forum.imasters.com.br/topic/432158-como-encontro-um-link-dentro-de-um-texto/
é a mesma pergunta.