Domanda

Sto usando l'editor FreeTextBox per ottenere qualche HTML creato dagli utenti. Il problema è questo editor non è la conversione caratteri speciali in entità HTML a eccezione di "<>". Non posso usare theHTML = Server.HtmlEncode(theHTML), perché converte tutto il codice HTML tra cui tag e parametri, e io non voglio creare un elenco di linee unfinishable theHTML.Replace.

C'è qualche altra funzione o un metodo a disposizione per la conversione in entità HTML, ma solo i tag fuori?

È stato utile?

Soluzione 3

Dopo aver cercato un sacco, ho scoperto che stavo usando la proprietà sbagliata del componente FreeTextBox. La proprietà è stata ConvertHtmlSymbolsToHtmlCodes che vanta per essere vero.

Essa contribuisce anche a utilizzare FormatHtmlTagsToXhtml se è necessario inserire il codice in pagine XHTML, perché utilizza una forte conferma con i parametri tag e citazioni che li circondano.

Altri suggerimenti

Se hai una miscela di significato < avviare una tag e < senso letterale segno minore, non si può forse dire che è ‘un tag’ di ignorare e che non lo è.

A proposito di tutto si potrebbe fare sarebbe quella di rilevare usi < che non erano un tag di inizio o di fine convenzionalmente formata, utilizzando una brutta inaffidabile regex qualcosa del tipo:

<(?!\w+(\s+\w+="[^"<]*")*\s*/?>|/\w+\s*>)

e sostituirli con &lt;. Allo stesso modo per & con &amp;:

&(?!\w+;|#\d+;|#x[0-9A-Fa-f]+;)

(> non sono pertanto da sfuggito.)

Questo non permetterà ad ogni possibile modo valido di elementi costruire, e permetterà elementi rotti mis-nidificati, e le entità inesistenti, e sarebbe rovinare i costrutti non-elemento come commenti. A causa regex non può analizzare HTML, per non parlare di HTML con l'aggiunta di cocci croccanti.

Quindi, non è certo infallibile. Se si desidera una corretta marcatura che non rompere la tua pagina quando lasciano accidentalmente un div aperta, il miglior primo passo è quello di analizzare come XHTML e rifiutare con un errore se non è ben formato XML.

Se si dispone di una ricca componente editor di testo che genera output in cui un < letterale non è sfuggito, allora è il momento di sostituire il componente con qualcosa di meno spaventosa. Ma in generale non è una buona idea per consentire agli utenti di creare HTML, perché sono davvero spazzatura a esso. Inoltre permettendo a chiunque di HTML ingresso dà loro il controllo completo sul distruggendo il sito e la sua sicurezza con JavaScript. Un linguaggio di testo-formattazione più semplice è spesso una vittoria.

suggerirei parsing attraverso ogni elemento utilizzando Linq a XML e codifica il valore di ogni elemento e attributo nodo. Cercherò di trovare un qualche codice, ma hey è 17:00 di Venerdì!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top