Home Page Home Page Articoli Renderizzare automaticamente gli URL come links in formato HTML

Renderizzare automaticamente gli URL come links in formato HTML

Molto spesso ci capita di dover visualizzare nelle pagina web degli URL, letti magari dal DB, ma che non ci vengono visualizzati subito come link cliccabili dall'utente. In questo articolo verrà spiegato come automatizzare questo processo.
Autore: Valerio Fornito Livello:
Ho un sito, ho un database, alcuni utenti inseriscono i loro links ma non conoscono nulla di html. Quante volte hai fatto questo ragionamento?. Come automatizzare questo lavoro?

Ci sono due modi: usare un editor html via Internet Explorer oppure usare le regular expressions.
Creare un html editor basato sul web è piuttosto difficile ma ci sono alcuni esempi sul web, e un paio di extensions per Macromedia Dreamweaver.
Le espressioni regolari sono un potente add-on per le nostre applicazioni web e possiamo risolvere il nostro problema.

Ho usato C# come linguaggio di base.

Apri un documento nel tuo editor di file .aspx e scrivi:

<%@ Page Language="C#" debug="true"

%>


Abbiamo dichiarato con che linguaggio la nostr pagina viene eseguita.
Ora aggiungiamo alcuni tag html

<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1">


aggiungiamo il tag "script":

<script language="C#" runat="server">

quindi creiamo la funzione:

public string fetchURL (string message) {

Dichiarando la funzione abbiamo aggiunto una variabile: message
Questa è la stringa di input, senza nessun link attivo.

Ora il codice: niente paura!!
Dichiariamo delle variabili:

string strInput = message;

string strResult;


Creiamo un pattern per eseguire il link che inizi con il suffisso HTTP (come ad esempio Http://www.dopostback.com/)


string strPattern = @"(?<url>http://(?:[\w-]+\.)+[\w-]+(?:/[\w-./?%&~=]*[^.])?)";


Quindi il codice qui di seguito:


string strReplace = "<a href=\"$&\" target=_blank>$&</a>";


via con la sostituzione:


strResult = Regex.Replace(strInput, strPattern, strReplace);


Dobbiamo però aggiungere un codice extra per essere sicuri che ogni link sia attivato.

Questo codice è simile al precedente.


strPattern = @"(?<!http://)(?<url>www\.(?:[\w-]+\.)+[\w-]+(?:/[\w-./?%&~=]*[^.])?)";
strReplace = "<a href=\"http://$&\" target=_blank>http://$&</a>";
strResult = Regex.Replace(strResult, strPattern, strReplace);


Fatto. Ma non è abbastanza. Possiamo attivare anche un link e-mail ed un link ftp.

Link per l'e-mail:

strPattern = @"(?<url>\w+\@\w+\.\w+ ?)";
strReplace = "<a href=mailto:$&>$&</a>";
strResult = Regex.Replace(strResult, strPattern, strReplace);


Per il link FTP usiamo lo stesso ragionamento dell'HTTP:
Se il prefisso ftp:// è presente:

strPattern = @"(?<url>ftp://(?:[\w-]+\.)+[\w-]+(?:/[\w-./?%&~=]*[^.])?)";
strReplace = "<a href=\"$&\" target=_blank>$&</a>";
strResult = Regex.Replace(strResult, strPattern, strReplace);


oppure no:

strPattern = @"(?<!ftp://)(?<url>ftp\.(?:[\w-]+\.)+[\w-]+(?:/[\w-./?%&~=]*[^.])?)";
strReplace = "<a href=\"ftp://$&\" target=_blank>$&</a>";
strResult = Regex.Replace(strResult, strPattern, strReplace);


Ora non rimane che ritornare una nuova variabile con tutti i cambiamente e
chiudere la funzione:


return strResult;


Per test possiamo usare una semplice stringa:


void page_load(object sender, System.EventArgs e){
string strOut = "Ciao! sono Valerio ed il mio sito è
http://www.dopostback.com/ 
la mia email è do@dopostback.com. Spiacente ma il mio ftp ftp ftp.dopostback.com
è chiuso";
string strOut2 = fetchURL(strOut);
Response.Write(strOut2);
}


Infine chiudiamo il tag script e gli atri tag html.


</script>
</head>
<body>
</body>
</html>


Questo è tutto! Salviamo questa pagina nel nostro web server come regularexpressiontest.aspx e proviamola.
A questo punto sei in grado di riutilizzare questa funzione per gli altri tuoi script!
Voto medio articolo: 5.0 Numero Voti: 1
Valerio Fornito

Valerio Fornito

Laurea in briscola nucleare Profilo completo

Articoli collegati

Utilizzare controlli lato server in un Datagrid
Il DataGrid è un controllo molto avanzato spesso usato in ASP.NET. La maggior parte degli sviluppatori utilizza le funzioni basilari. E' possibile però estenderlo utilizzando controlli server aggiuntivi all'interno delle celle. Vediamo un esempio con una Combo Box.
Autore: Luca Graziani | Difficoltà: | Commenti: 6 | Voto:
Utilizzare il Tracing in ASP.NET
Scopriamo in questo articolo il servizio di analisi di ASP.NET che permette di controllare e analizzare le richieste web, consentendo di scrivere nel log del servizio di analisi in modo da effettuare a runtime una sorta di debug dell'applicazione Web.
Autore: Marco Caruso | Difficoltà: | Commenti: 1 | Voto:
Spedire messaggi SMS con .NET
Spiegheremo in questo articolo alcune tecniche per inviare messaggi SMS tramite .NET: invio tramite Web Service, invio diretto tramite cellulare oppure invio tramite un SMS Gateway. Presente anche un esempio pratico di invio con ASP.NET e Web Service.
Autore: David De Giacomi | Difficoltà: | Commenti: 9
Utilizzare il Web Service dei SQL Reporting Services da una pagina ASP.NET
Vedremo in questo articolo un altro modo di utilizzo dei Reporting Services. Mostreremo infatti come consumare il Web Service offerto dai RS per esportare i Reports in vari formati (XML, Excel, PDF, HTML, CSV) e visualizzarli in una pagina ASP.NET.
Autore: Marco Caruso | Difficoltà: | Commenti: 1 | Voto:
Visualizzare gerarchicamente i dati con una speciale DataGrid
La rappresentazione grafica di dati gerarchicamente connessi tra loro può essere realizzata anche con l'ausilio di un free control, creato da Denis Bauer, ottenendo un risultato veramente ottimo sia dal punto di vista grafico sia da quello funzionale.
Autore: Andrea Bersi | Difficoltà: | Commenti: 1 | Voto:
Mobile Web Forms e compatibilità tra Device
Ecco un articolo che illustra la creazione di una pagina mobile, tenendo conto delle compatibilità tra vari Device mobili.
Autore: Giovanni Ferron | Difficoltà:
DataSet, CreateChildView, e DataRelation: usare DataGrid per visualizzare dati da 2 tabelle
Un semplice e chiaro esempio per sfruttare al meglio il controllo DataGrid, per la visualizzazione di dati provenienti da 2 tabelle diverse, ma collegate fra loro. Viene spiegato come utilizzare il DataSet per creare delle relazioni tra le tabelle in esso contenute.
Autore: Andrea Bersi | Difficoltà: | Commenti: 1 | Voto:
Caching di pagine ASP.NET
Quando si ha a che fare con l'ingegnerizzazione di un programma la gestione del cache è una cosa importante. La "cache" e' un'area molto veloce (di solito la RAM) dove vengono copiati i dati che necessitano di essere disponibili nel piu breve tempo possibile. Vediamo com'è possibile gestire la Cache in ASP.NET
Autore: Matteo Raumer | Difficoltà:
Paginare un Datalist utilizzando il metodo ReadXml della classe Dataset
Il controllo DataGrid è uno strumento molto completo, ma che a volte può risultare troppo complesso in base alle esigenze della nostra applicazione. In questo articolo verrà spiegato come utilizzare al massimo il controllo DataList, anch'esso ottimo visualizzatore di dati, utilizzando però un'origine dati in formato XML, implementandone la paginazione.
Autore: Matteo Raumer | Difficoltà:
Come paginare un DataList
In questo articolo viene spiegato come paginare un DataList, grazie all'aiuto di stored procedure e al supporto per il paging offerto dal controllo stesso. Per ottenere una paginazione veloce, leggera, e personalizzabile al massimo.
Autore: Loris Badii | Difficoltà: | Commenti: 2 | Voto:
Ridimensionare al volo le immagini uploadate sul server, per creare le ThumbnailImages.
Molto spesso ci capita di voler visualizzare un'anteprima di un'immagine che magari ha grosse dimensioni. In questo articolo verrà spiegato come creare le immagini ridimensionate senza perdita di qualità.
Autore: Valerio Fornito | Difficoltà: | Commenti: 6
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5