pedrotuga Posted November 28, 2006 at 05:48 AM Report #67262 Posted November 28, 2006 at 05:48 AM Aqui vai uma função que recebe texto e transforma todos os urls presentes em links. function autolink($foo) { $foo = preg_replace('/(?<!S)([w.]+)(@)([w.]+)b/i', '<a href="mailto:$1@$3">$1@$3</a>', $foo); $foo = preg_replace('/(?<!S)((http(s?)://)|(www.))+([w./&=#?-~%;]+)b/i', '<a href="http$3://$4$5" target="_blank">http$3://$4$5</a>', $foo); $foo = preg_replace('/(?<!S)((ftp(7?)://)|(ftp.))([w./&=#?-~%;]+)b/i', '<a href="ftp$3://$4$5" target="_blank">ftp$3://$4$5</a>', $foo); return ($foo); } bem... parece que a função anterior está a causar alguns problemas... caso não funcione.. experimentem esta que o iceburn escreveu. function apanhalinks($texto) { $texto = eregi_replace('(((f|ht){1}tp://)[-a-zA-Z0-9@:%_\+.~#?&//]+)', '<a href="\\1">\\1</a>', $texto); $texto = eregi_replace('([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_\+.~#?&//]+)','\\1<a href="http://\\2">\\2</a>', $texto); $texto = eregi_replace('([[:alnum:]][a-z0-9_.-]*@[a-z0-9.-]+\.[a-z]{2,4}$)', '<a href="mailto:\\1">\\1</a>', $texto); return ($texto); }
Ped@ntilva Posted November 28, 2006 at 01:49 PM Report #67291 Posted November 28, 2006 at 01:49 PM Isso dá geito para fazer aquelas cenas tipo wiki que quando a palavra existe na base de dados dá um link. Certo??? 😄
pedrotuga Posted November 28, 2006 at 07:11 PM Author Report #67365 Posted November 28, 2006 at 07:11 PM yap
-IceBurn- Posted November 30, 2006 at 08:02 PM Report #68006 Posted November 30, 2006 at 08:02 PM Isso dá geito para fazer aquelas cenas tipo wiki que quando a palavra existe na base de dados dá um link. Certo??? 🙂 Peço desculpa por discordar... Isso realmente é útil, mas dessa forma o link tem de existir, para formar links a partir de palavras ter-se-ia que acrescentar mais qualquer coisa... Há bastante tempo que utilizo não preg_match, mas sim eregi_replace com o mesmo objectivo. De qualquer maneira a expressão utilizada dá erro. Mas isto funcionaria: <?php function apanhalinks($texto) { $texto = eregi_replace('(((f|ht){1}tp://)[-a-zA-Z0-9@:%_\+.~#?&//=]+)', '<a href="\\1">\\1</a>', $texto); $texto = eregi_replace('([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_\+.~#?&//=]+)','\\1<a href="http://\\2">\\2</a>', $texto); $texto = eregi_replace('([[:alnum:]][a-z0-9_.-]*@[a-z0-9.-]+\.[a-z]{2,4}$)', '<a href="mailto:\\1">\\1</a>', $texto); return ($texto); } $string = "Visita http://tenhamedo.net ou contacta-me em neuemail@dominio.com"; echo apanhalinks($string); ?>
Ped@ntilva Posted November 30, 2006 at 09:20 PM Report #68022 Posted November 30, 2006 at 09:20 PM Peço desculpa por discordar... Discordas? Porquê? Se estiver na base de dados é só ir buscar, se não tiver não cria uma hiperligação.
-IceBurn- Posted November 30, 2006 at 09:53 PM Report #68030 Posted November 30, 2006 at 09:53 PM Discordas? Porquê? Se estiver na base de dados é só ir buscar, se não tiver não cria uma hiperligação. Segundo o que me deu a entender, falavas de algo que ao encontar uma certa palavra num texto, seria automaticamente criado um determinado link específico. De forma que se não era de todo esse o teu ponto de vista, então fui eu que interpretei mal a ideia, logo peço desculpa.
pedrotuga Posted December 1, 2006 at 01:11 AM Author Report #68059 Posted December 1, 2006 at 01:11 AM Yaps. o iceburn tem razão, li agora isto e não sei como é que respondi afirmativamente. Uma funão como a que dizes é ainda mais facil de instalar pois só temos que arranjar uma expresão regular que encontra a palavra X e vá buscar esse o link à base de dados. A mim aquela funciona bem. Vou colocar a tua no tópico de abertura tambem,
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now