Hai provato a trovarla da solo una soluzione?![]()
Comunque innanzitutto ti conisglio questo sito http://regexlib.com/.
Poi visto che ero in vena mi sono fatto l'esercizietto che tu hai proposto, ed ecco il risultato:
Se provi il codice vedrai che la prima soluzione è più compatta ma fallisce nel caso in cui tu abbia un link senza l'http davanti. La seconda è un mix di espressioni regolari e str_replace.codice:<?php // Prima soluzione $stringa = "Visita il mio sito www.html.it oppure quello del mio amico http://www.google.it/"; echo $stringa." "; $regex = "((http\://|https\://|ftp\://)|(www.))+(([a-zA-Z0-9\.-]+\.[a-zA-Z]{2,4})|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(/[a-zA-Z0-9%:/-_\?\.'~]*)?"; $stringa2 = preg_replace('#'.$regex.'#', "<a href=\"$0\">$0</a>", $stringa); echo $stringa2." "; // soluzione 2 /** * Passando un link a questa funzione controlla che inizi con il protocollo * http, in caso contrario modifica la stringa e la ritorna con il protocollo http aggiunto. * * @param string URL * @return string URL modificato */ function addhttp($webpage) { $pos = strpos($webpage, 'http://'); if($pos === false && $webpage!= '') { $webpage = "http://".$webpage; } return $webpage; } preg_match_all('#'.$regex.'#', $stringa, $risultato); $cerca = $risultato[0]; $sostituisci = array(); foreach($cerca as $valore) { $sostituisci[] = ''.addhttp($valore).''; } $stringa2 = str_replace($cerca, $sostituisci, $stringa); echo $stringa2." "; ?>
Ciao
edit:
Tieni presente che nel codice che ho postato la prima stringa è testuale, ma evidentemente il forum usa una funzione simile a quella che ti ho postato per trasformarli gli url in link.

Rispondi quotando