Jump to content

Recommended Posts

Posted

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);
}
Posted

Isso dá geito para fazer aquelas cenas tipo wiki que quando a palavra existe na base de dados dá um link.

Certo??? 😄

Posted

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);
?>
Posted

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.

Posted

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.

Posted

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,

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.