• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

htmlentities funktioniert nicht

Status
Für weitere Antworten geschlossen.

ixam

Neues Mitglied
Hallo,
ich bin am verzweifeln. Ich verstehe einfach nicht, warum dieser wahrlich simple code:
PHP:
<?php 
$string="Chalupa äüö Amerika se nachází v Oderských vrších uprostřed lesů ...";

echo htmlentities($string);
?>
nicht funktioniert.
Der text wird ohne die entsprechenden entities ausgegeben.
Wo liegt der Fehler, der mich in den Wahnsinnn treiben könnte.
Danke schonmal für eure Hilfe
Grüße
ixam
 
Werbung:
Hallo,
ich bin am verzweifeln. Ich verstehe einfach nicht, warum dieser wahrlich simple code:
PHP:
<?php 
$string="Chalupa äüö Amerika se nachází v Oderských vrších uprostřed lesů ...";

echo htmlentities($string);
?>
nicht funktioniert.
Der text wird ohne die entsprechenden entities ausgegeben.
Wo liegt der Fehler, der mich in den Wahnsinnn treiben könnte.
Danke schonmal für eure Hilfe
Grüße
ixam

Hi Ixam,

ist doch ganz logisch :-)

Er wandelt mit htmlentities, die Umlaute etc. in HTML konforme Entitäten um und gibt die umgewandelte Version aus. Bei der Ausgabe wird der HTML Text (die Tags etc.) geparst und vom Browser interpretiert. Da ist ein z.B.

Code:
&auml; = ä

Somit ist die Ausgabe doch korrekt.
Schau Dir doch mal den Quelltext an ...

Hier mal als Test ...
http://www.svenbartak.de/test.php

Ausgabe:
Code:
Chalupa äüö Amerika se nachází v Oderských vrších uprostr(ed lesu*...

Quelltext:
Code:
Chalupa &auml;&uuml;&ouml; Amerika se nach&aacute;z&iacute; v Odersk&yacute;ch vrš&iacute;ch uprostr(ed lesu* ...

Hat doch alles geklappt o. verstehe ich das falsch.

Gruß Sven
 
Danke,
aber wirklich weiter gebracht hast du mich nicht, denn das Problem ist folgendes:
ich habe einen ungefähr 300 zeilen langen text, gespickt mit sonderzeichen, vor mir liegen.
Jetzt könnte ich natürlich alle sonderzeichen einzelnd per hand umwandeln, so wie du das gemacht hast. Das ist aber zu viel Arbeit und ich habe mir deshalb gedacht, das ich php das übernehmen lasse, aber so wie ich es versucht habe(siehe 1. Post) klappt es nicht. Die sonderzeichen werden nicht in die entsprechenden enitites umgewandelt. ä wird nicht zum &auml; .
So sieht die seite von oben bei mir aus:
MünchenChalupa äüö Amerika se nacházÃ* v Oderských
ich hoffe, du verstehst jetzt mein problem
danke trotzdem
ixam
 
Werbung:
PHP arbeitet in deinem Fall sicherlich richtig, und wenn du im Quelltext schaust, so wirst du auch die Entitäten sehen.

Wie bereits angeführt wandelt htmlentities() ein ä in ein &auml;. Wenn der Browser das anzeigt wandelt er es wieder in ein ä um, was den gewünschten Effekt erzielt, dass die Umlaute korrekt angezeigt werden.

Was du da siehst ist eine Fehleinstellung des Browser durch inkorrekte Angabe eines Encodings. Du musst dich entscheiden ob du dein Dokument in UTF-8 oder z.B. in ISO-8859-1 anzeigen willst (oder gar einer ganz anderen Kodierung).

Wenn du dich dafür entschieden hast, musst du deine Dokumente auch mit entsprechendem Encoding abspeichern und die korrekte Angabe im Meta-Bereich durchführen.

Um zu testen welche Kodierung du im Moment benutzt, geh in deinem Browser auf "Ansicht"->"Zeichenkodierung" und probiere so lange aus, bis die Darstellung richtig ist.
 
Danke,
ich denke, wir sind dem ganzem jetzt auf der Spur. Ich habe jetzt sämtliche angebotenen Codierungsmöglichkeiten ohne Erfolg durchprobiert. Was soll ich jetzt tun?
ixam
 
DU hast es immernoch nicht verstanden, du kannst mit htmlentities, deine Sonderzeichen nicht umwandeln!

Außer es handelt sich hierbei um die bekannten, wie äöü usw..
 
Werbung:
@gollum1990
Sorry, das ich mich falsch ausgedrückt habe
Was htmlenteties macht habe das auch schon vorher gewusst.
Mit "codierungsmöglichkeiten " meine ich die von Frank angesprochenen encodings beim Browser.

Grüße
ixam
 
Das Problem liegt bereits am Encoding der Zeichenkette innerhalb von php
PHP:
$string="Chalupa äüö Amerika se nachází v Oderských vrších uprostřed lesů ...";
echo mb_detect_encoding($string);
zeigt, dass bereits die Zeichenkette in UTF-8 kodiert ist.
Du musst also die Website auf UTF-8 stellen
Code:
 <meta http-equiv="content-type" content="text/html; charset=utf-8">
Und die umwandlungsmethode anpassen
PHP:
htmlentities($string, ENT_QUOTES, "UTF-8");

Oder wenn du nicht in utf-8 arbeiten möchtest, benutze
PHP:
mb_convert_encoding($string, "ISO-8859-1", "UTF-8")
um den String in eine andere Kodierung (hier im Beispiel Iso-8859-1)umzuwandeln
 
Danke!
So gehts. Jetzt werden alle Zeichen wir im originaltext ausgegeben.
Allerdings habe ich jetzt folgendes problem:
PHP:
<?php
$string="<b>Überschrift</b><br>text";
echo htmlentities($string, ENT_QUOTES, "UTF-8");
?>
wird nicht so
Überschrift
text
sondern so
b>Überschrift</b><br>text
ausgegeben
an was liegts jetzt?
Grüße
ixam
 
Werbung:
Na, < und > werden durch htmlentities auch in &lt; und &gt; umgewandelt, so dass der HTML-Code nicht dargestellt wird, sondern einfach der Code angezeigt wird.
 
ganz einfach, htmlentities ersetzt die sonder zeichen, dazu gehört auch < und >
< wird zu &lt; (less than, kleiner als) und > wird zu &gt; (greater than, größer als). Dadurch hast du es nicht als html-ausgabe sondern du siehst die zeichen.

Du darfst dein html-code nicht durch htmlentities laufen lassen.

//zu lahm
 
Ah Danke. War doch logisch eigentlich logisch :oops:
Danke, das wars eigentlich. ich habe jetzt einfach bei jedem <b> etc. ein extra echo gemacht.
Grüße
ixam
 
Werbung:
Status
Für weitere Antworten geschlossen.
Zurück
Oben