Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    446

    problema riconoscimento url

    Ho questa funzione che mi serve per riconoscere all'interno del testo un url

    codice:
    function urlreplace($str){
    	$str = preg_replace ('((www.|\\WWW.|\\http:|\\HTTP:)+([:/~a-zA-Z0-9_\-\.]+)\.([:/~a-zA-Z0-9/?/=/#/_]+))', '<a target=\'_blank\' href=\'http://$1$2.$3\'>$1$2.$3</a>', $str);
    	$str = preg_replace ('(([:/~a-zA-Z0-9_\-\.]+)\@([:/~a-zA-Z0-9_\-\.]+))', '<a  href=\'mailto:$1@$2\'>$1@$2</a>', $str);
    	return str_replace("http://http://","http://",$str);
    }
    Solo che quando nel link ho il carattere & si interrompe (ovvero mi legge il link fino alla & esclusa) e non funziona. Qualcuno sa correggermi questo errore??

  2. #2
    Utente di HTML.it L'avatar di Gab-81
    Registrato dal
    Nov 2005
    Messaggi
    558
    Il problema è nell'espressione regolare
    Codice PHP:
    $str preg_replace ('(([url]www.[/url]|\\[url]WWW.[/url]|\\http:|\\HTTP+([:/~a-zA-Z0-9_\-\.]+)\.([:/~a-zA-Z0-9/?/=/#/_]+)) 
    ...ora di preciso non so come funzionano, ma sicuramente ti si blocca quando incontra "&" perchè non è un carattere dell'espressione regolare. Così dovrebbe andare:
    Codice PHP:
    $str preg_replace ('(([url]www.[/url]|\\[url]WWW.[/url]|\\http:|\\HTTP+([:/~a-zA-Z0-9_\-\.]+)\.([:/~a-zA-Z0-9/?/=/#/_/&]+)) 

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    446
    grazie, ora funziona

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.