Script php: Riconoscere url in un testo e trasformarli in link

   difficoltà:  script script script script script

Script simili
3/4/2007


Con questa funzione php potremo, passando come parametro una stringa, restituire la stessa con gli url trasformati in link. Questo attraverso l'uso delle espressioni regolari e della funzione preg_replace.

function urlreplace($str){
$str = preg_replace ('(([:/~a-zA-Z0-9_\-\.]+)\.([:/~a-zA-Z0-9]+))', '<a target=\'_blank\' href=\'http://$1.$2\'>$1.$2</a>', $str);
return str_replace("http://http://","http://",$str);
}
La funzione sostituisce url del tipo:

http://www.sito.it/
http://sito.it/
http://demo.sito.it/
www.sito.it/

con o senza slash finale.




Commenti


  Filippo

27/5/2007 18:40:02

Ottimo script, con un leggera modifica l'ho utilizzato nel mio sito per censurare nei testi gli indirizzi

  alesx

21/10/2007 0:39:32

ciao a tutti, come si puo fare xchè i link a immagini non vengano trasformati in cliccabili

http://www.sito.it/img/immagine1.gif
http://www.sito.it/img/immagine1.png
http://www.sito.it/img/immagine1.jpg

  fragment

1/12/2007 3:22:27

ho riscontrato degli errori in caso di pagine di questo tipo
www.indirizzo.com/index.php?action=no

il codice tronca il collegamento all'altezza del punto interrogativo

inoltre in casi come questo:
.http://www.indirizzo.com
lo script creerà url del tipo
http://.http://www.indirizzo.com

  Serdominik

10/9/2008 16:17:29

infatti come si potrebbe far in modo di visualizzare i link solo partendo dal www. ?

  Air

3/3/2010 15:30:47

Ottimo, aggiungo:


$msg = preg_replace ('(([:/~a-zA-Z0-9_\-\.]+)\.([:/~a-zA-Z0-9/?_=]+))', '<a target=\'_blank\' href=\'http://$1.$2$3\'>$1.$2$3</a>', $msg);
$msg = str_replace("http://http://","http://",$msg);

echo "$msg";

così se inserisci un url completo di sitticategorie, lo script va.

Vorrei aggiungere, che non so fare...
ma se nel testo ho anche una mail e voglio inserire il mailto?
grazie ciao

  Mauro

13/3/2011 20:24:35

Io ho trovato questa:

$testo = preg_replace('/\b(\S+@\S+)\b/',
'<a href="mailto:\1";>\1</a>', $testo);

Funziona bene...



Lascia un commento


Codice di controllo*:
Nome*:
Email/Link:
Testo*:
 
I campi contrassegnati con * sono obbligatori.