2013-07-12 11 views
5

Ich habe Fremdsprachen-Strings in utf8 gespeichert. Wenn ich sie zeige, möchte ich, dass sie so transformiert werden, dass akzentuierte Zeichen zu ihren HTML-Gegenstücken werden, z. é wird éWie akzentuierte Zeichen in HTML in PHP konvertieren?

Wie auch immer ich meine Suche, alles, was ich finden kann, ist htmlentities(), die es nicht tut.

+4

Bitte beschreiben Sie, diese müssen tun. Wenn Sie UTF-8-kodierten HTML-Code generieren, können Sie einfach Ihre UTF-8-Zeichen ausgeben. – jeyk

+0

Nun, ok dann. Das scheint einfach nicht das Richtige zu sein. – Gabriel

+0

Abgesehen davon, wenn Sie wirklich in Entitäten konvertieren wollten, dann wäre 'htmlentities' in der Tat es. Warum denkst du das Gegenteil? – Jon

Antwort

8

Stellen Sie sicher, dass Sie die Codierung korrekt angeben, wenn Sie htmlentities() anrufen.

Die Dokumentation zeigt, dass es standardmäßig 'UTF-8' ist, aber wenn Sie ein wenig weiter lesen, werden Sie sehen, dass das neue PHP 5.4 ist. Wenn Sie eine ältere Version verwenden, lautet der Standardwert 'ISO-8859-1', und Sie müssen sicherstellen, dass Sie ihn explizit als 'UTF-8' angeben, anstatt sich auf das Standardverhalten zu verlassen.

htmlentities($string, 0, 'UTF-8'); 
+0

Es gibt Fälle, in denen Sie Entitäten für akzentuierte Zeichen (à, è, ì, ò, ù, ...) generieren möchten, aber HTML - Code beibehalten möchten (vermeiden Sie also "<" and ">" und vermeiden Sie das Entweichen bereits entschlummerter Entitäten) In diesen Fällen können Sie diesen Code verwenden: '$ string = str_replace (array (" < "," > "), array (" <", "> "), htmlentities ($ string, ENT_NOQUOTES, 'UTF-8', FALSE)) ; ' Dieser Code ist kompatibel mit PHP> = 5.2.3 – lucaferrario

7

Ich fand dies eine sehr einfache Lösung für dieses Problem.

Der erste Teil versucht, den Text zu codieren. Wenn die Ausgabe $ eine leere Zeichenfolge zurückgibt, wird der Wert utf8 codiert und dann werden die HTML-Entitäten erstellt.

$output = htmlentities($value, 0, "UTF-8"); 
if ($output == "") { 
    $output = htmlentities(utf8_encode($value), 0, "UTF-8"); 
} 

Beispiel:

Montréal 

Ausgang:

Montr&eacute;al 
Verwandte Themen