La sostituzione di caratteri speciali da sorgente HTML
-
19-09-2019 - |
Domanda
Sono nuovo di codice HTML e so HTML ha alcuni caratteri riservati per il suo utilizzo e visualizza anche alcuni personaggi dal loro codice di carattere. Per esempio -:
Œ is Œ
© is ©
® is ®
Ho il codice HTML in std :: string. come posso decifrare nella loro forma attuale e sostituire da std :: string? c'è qualche libreria con sorgente disponibile o può essere fatto utilizzando le macro preprocessore?
Soluzione
Ti consiglio di utilizzare un po 'di parser HTML / XML che può fare automaticamente la conversione per voi. Parsing del codice HTML in modo corretto a mano è estremamente difficile. Se ti ostini a farlo da soli, Boost biblioteca String Algoritmi fornisce funzioni di sostituzione utili.
Altri suggerimenti
Œ is Œ
No, non è. Œ
è 'LINEA PARZIALE INDIETRO'. Le entità numeriche corrette per Œ sono Œ
e Œ
.
Un metodo per le entità numeriche sarebbe quella di utilizzare un'espressione regolare come &#([0-9]+);
, afferrare il valore numerico e convertirlo al carattere ASCII (probabilmente con sprintf
in C ++).
Per le entità con nome si avrebbe bisogno di costruire una mappatura. Si potrebbe probabilmente fare una semplice stringa sostituire da convertire in numeri, quindi utilizzare il metodo di cui sopra. W3C ha un tavolo qui: http: //www.w3. org / TR / WD-html40-970708 / sgml / entities.html
Ma se si sta cercando di leggere o analizzare un po 'di HTML in una stringa, è necessario utilizzare un parser HTML. Ricerca per le tante domande sul SO.