disign | PHP: rendere cliccabili mail e link provenienti da un testo | a digital sign for a best design!
A digital sign for a best design

Articolo stampato da http://disign.improntedigitali.it/php-rendere-cliccabili-mail-e-link-provenienti-da-un-testo-363-2-1.html

© Luca Frassineti

Programmazione 6.874 visualizzazioni

PHP: rendere cliccabili mail e link provenienti da un testo

27/03/2012

Attraverso Php possiamo filtrare un contenuto di testo (immesso attraverso CMS o estratto da database, ad esempio), rilevare tutte le stringhe che indicano una mail o un sito web e rendere le stesse automaticamente cliccabili.

La funzione che presento oggi ha la particolarità di non utilizzare il classico eregi_replace oramai deprecato e che sarà abbandonato dalle prossime versioni di PHP. Al suo posto preg_replace, di cui segnalo la necessità di delimitare la reg exp con / in apertura  e chiusura, l'utilizzo del parametro finale i ad indicarne la recursività e la necessità dell'escape prima dei caratteri speciali inseriti.

Ecco la funzione:

 

function cliccabili($testo) {
    $testo = preg_replace('/(((f|ht){1}tp:\/\/)[-a-zA-Z0-9@:%_+.~#?&\/\/=]+)/i',     '<a href="\\1">\\1</a>', $testo);
    $testo = preg_replace('/([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_+.~#?&\/\/=]+)/i',     '\\1<a href="https://\\2">\\2</a>', $testo);
    $testo = preg_replace('/([_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3})/i',  '<a href="mailto:\\1">\\1</a>', $testo); return $testo;
}


Questo un esempio di applicazione pratica (supponendo di aver estratto dal nostro db un campo testo):

function cliccabili($testo) {
    $testo = preg_replace('/(((f|ht){1}tp:\/\/)[-a-zA-Z0-9@:%_+.~#?&\/\/=]+)/i',     '<a href="\\1">\\1</a>', $testo);
    $testo = preg_replace('/([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_+.~#?&\/\/=]+)/i',     '\\1<a href="https://\\2">\\2</a>', $testo);
    $testo = preg_replace('/([_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3})/i',  '<a href="mailto:\\1">\\1</a>', $testo); return $testo;
} }
$riga['testo'] = "Venerdì 10 febbraio alle 13,03 il signor Mario Rossi (mariorossi@mail.it) ha visitato il sito https://www.disign.it";
echo cliccabili($riga['testo']);

Invia una domanda o un commento sull'articolo

I campi obbligatori sono segnalati *

*

*



 


Questo sito è totalmente privo di pubblicità, se volete sostenere questa inziativa, potete scegliere di fare una piccola donazione libera:


© 2009 - 2024 Impronte digitali di Luca Frassineti. Tutti i diritti riservati.