PHP-Konvertierung HTML to Plain Text

pchilfe

Erfahrenes Mitglied
Liebe Freunde,

Ich habe mal wieder so ein technisches Problem und benötige euere Hilfe.

Ich habe ein multilinguales Nachrichtensystem entwickelt. Wo die Mitarbeiter über MySQL-Datenbank Nachrichten (Emails) schicken.

Mein Problem liegt in der Nachrichtenwiedergabe.

Für den Fall, dass jemand in der Nachricht HTML-Code schreibt, habe ich folgendes gemacht:

Code:
// Fügt Zeilenumbruch ein
     $strNachricht =  nl2br($strNachricht);
   // Wandelt HTML-Code in Text
     $strNachricht = htmlentities($strNachricht,ENT_NOQUOTES,koi8-ru);   
// Falls die Nachricht sehr lange Worte hat.
     $strNachricht = chunk_split($strNachricht,58,'<br>');
// <br> Zulassen
   $strNachricht = strip_tags($strNachricht,'<br>');

Damit die Internet-Browsern die HTML-Code als Plain Text zeigen. Nun habe ich Probleme mit der Russischen und Chinesischen Schriftzeichen. Da die Funktion: htmlentities() mit russischer Sprache und andere nicht Europäschen Sprachen Probleme hat. Der Text der Nachricht wird nicht angezeigt. Obwohl ich den ISO-Code der entsprechende Sprache eintrage, wird der Text der Nachricht nicht angezeigt. ISO-Code der arabischen Sprache ist in der Funktion htmlentities() nicht implementiert.

Meine Frage ist: gibt es eine Möglichkeit HTML-Code als Plaintext zu zeigen, ohne Einfluss auf die Sprache bzw. die Zeilenumbruch <br> erlaubt.

Hat jemand eine Idee für mich!

Tausand Dank im Voraus ......
 
Hallo,

pchilfe hat gesagt.:
Code:
// Fügt Zeilenumbruch ein
     $strNachricht =  nl2br($strNachricht);
   // Wandelt HTML-Code in Text
     $strNachricht = htmlentities($strNachricht,ENT_NOQUOTES,koi8-ru);   
// Falls die Nachricht sehr lange Worte hat.
     $strNachricht = chunk_split($strNachricht,58,'<br>');
// <br> Zulassen
   $strNachricht = strip_tags($strNachricht,'<br>');
Hier sollte man wohl besser [phpf]nl2br[/phpf] erst ganz am Ende ausführen und [phpf]strip_tags[/phpf] weglassen. Statt [phpf]chunk_split[/phpf] würde sich eher [phpf]wordwrap[/phpf] anbieten. Der Ausdruck koi8-ru ist hier falsch, da dieser als Differenz zwischen den Konstanten kio8 und ru gewertet wird. Korrekt wäre hier der String 'koi8-ru'.

Grüße,
Matthias
 
Hallo Matthias,

Vielen Dank für deine Antwort. Es funktioniert alles wieder wie ich es gern hätte. Den Tipp mit wordwrap() war eine super gute Idee. Damit habe ich das problem mit dem Multilingualität gelöst.
Aber Warum soll ich strip_tags() weglassen. Ohne strip_tags() kann ich die HTML-Codes nicht entfernen.

Die Konvertierung funktioniert bei mir wie folgt:

1) strip_tags()
2) wordwrap()
3) nl2br()

oder habe ich deine Lösung falsch verstanden.

Nochmal Vielen Dank ....
Gruß ...
 
Zurück