Sto sviluppando un CMS per un cliente e ha bisogno di modificare materiale e utilizzare caratteri speciali come ç
e ®
. Tuttavia, non voglio che debba inserire i codici dei caratteri come ®
. Qualcuno sa un buon modo per convertire automaticamente quei personaggi usando PHP?Convertire caratteri speciali in codici carattere HTML
risposta
È possibile utilizzare htmlentities() per farlo.
php -r 'echo htmlentities("®ç", ENT_COMPAT, "UTF-8"), "\n";'
®ç
Per attivare entità torna al testo leggibile, utilizzare html_entity_decode():
php -r 'echo html_entity_decode("®ç", ENT_COMPAT, "UTF-8"), "\n";'
®ç
Se non si utilizza unicode, omettere il nome charset o dare il set di caratteri corretto.
+1 per specificare la codifica. –
Risposta fantastica che risolve un problema con cui ho discusso per alcuni anni. Vale la pena notare che alcune delle altre risposte che menzionano l'incollatura o l'hard coding della versione del KeyCode ALT del simbolo non funzioneranno quando si sposta il codice dal sistema operativo al sistema operativo. –
Usa unicode, e fargli vedere come copiare & incolla da mappa caratteri :-)
-1. Che tipo di risposta è questa? –
@Alin Non è * che * una cattiva risposta, direi - se il client utilizza già caratteri come ç e ®, quindi utilizzando UTF-8, ad esempio, per l'input, l'archiviazione e l'output del CMS consentiranno per eliminare la necessità delle entità HTML. Ad esempio, proprio come succede su questa pagina web, dove ho appena scritto "®", inviato al sito e visualizzato sul sito come "®", cerca il codice sorgente per questa pagina e hai vinto vediamo un'entità HTML lì, solo il vero personaggio reale. –
@MattGibson Un problema è se si utilizza il controllo del codice sorgente e si sposta il codice avanti e indietro tra sistemi operativi basati su Unix e sistemi operativi Windows. Ho imparato a memoria che i codici tasto ALT non funzionano nel modo in cui li si desidera attraverso i sistemi operativi. –
Il modo più semplice sarebbe quella di utilizzare UTF-8 fin dal inizio.
Ma si può anche convertire automaticamente i caratteri con DOM:
$dom = new DOMDocument;
$dom->appendChild(new DOMText('© oui içi » '));
echo $dom->saveHtml();
uscite
© oui içi »
Dai un'occhiata alla funzione htmlentities. Questo prende una stringa e converte i caratteri del componente nelle loro entità HTML. È possibile specificare la codifica della stringa per essere coerente con l'input dell'utente.
Grazie! Funziona :) –
Err. Assicurati che la codifica dei caratteri sia coerente (ad esempio, usa UTF-8 in tutto) e non è necessario convertire quei caratteri in modo che vengano visualizzati perfettamente. – Quentin