PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP für Fortgeschrittene und Experten (http://www.selfphp.de/forum/forumdisplay.php?f=13)
-   -   Problem mit htmlentities() (http://www.selfphp.de/forum/showthread.php?t=17530)

N'Koto Zinde 28.08.2007 17:36:59

Problem mit htmlentities()
 
Hallo,

ich hätte da ein Problem:

Bevor meine Daten aus einem Formular in die Datenbank geschrieben werden, lasse ich mit htmlentities() die Sonderzeichen in HTML-Code umwandeln.

und zwar so:
PHP-Code:

$_REQUEST[Name] = htmlentities($_REQUEST[Name], ENT_QUOTES); 

Klappt auch, bis auf die Umlaute:
Aus einem ä sollte ja theoretisch ein ä werden. Tatsächlich wird daraus aber ein: ä

Benutze ich htmlentities nicht, werden Umlaute einfach so übergeben aber ich zerschieße mir mit eventuellen Hochkommata oder Anfrühungszeichen meine Abfragen.

Der Zeichensatz der in meinem Dokument verwendet wird ist ISO-8859-1 (wie es eigentlich ja auch sein sollte).

Ich habe dieses Problem schon länger, und bisher konnte mir noch keiner helfen. Villeicht jetzt?

Raketenmann 28.08.2007 19:10:19

AW: Problem mit htmlentities()
 
Dann verwende doch addslashes() statt htmlentities() ...

z0iD 28.08.2007 19:20:12

AW: Problem mit htmlentities()
 
Na das ist doch ein bisschen "davongelaufen". Das wird definitiv an Zeichensatz liegen.
Jeder hat das doch schon mal gesehen, wenn sich ein "ä" in zwei andere seltsam anmutende Zeichen verwandelt. Wenn htmlentities() jene zwischen die Finger bekommt ist klar dass da so ein Bockmist rauskommt.
Leider fällt mir da auch jetzt keine Lösung ein. Aber ich bin mir recht sicher, dass es am Zeichensatz liegt.

z0iD 28.08.2007 19:22:51

AW: Problem mit htmlentities()
 
Nachtrag:
Hast Du mal versucht das "ä" in ein int umzuwandeln und dann mal auszugeben? Diese Zahl solltest Du dann mal mit dem Index vergleichen, den das "ä" in dem von Dir gewählten Zeichensatz haben sollte.

Raketenmann 28.08.2007 19:27:51

AW: Problem mit htmlentities()
 
Zitat:

Zitat von z0iD (Beitrag 105814)
Na das ist doch ein bisschen "davongelaufen".

Stimmt schon...

Zitat:

Zitat von z0iD (Beitrag 105814)
Leider fällt mir da auch jetzt keine Lösung ein.

Wenn er es eilig hat, wäre es zumindest eine Lösung ;-)

feuervogel 28.08.2007 22:23:46

AW: Problem mit htmlentities()
 
ohne weitere informationen lässt sich da aber nicht viel sagen außer "bei mir klappts"

bUTschy 28.08.2007 23:43:08

AW: Problem mit htmlentities()
 
nabend ;)

Arbeite mit $_POST und verzichte auf $_REQUEST ;-)
Fürs speichern in die Datenbank, guck dir mal die PHP Funktion mysql_real_escape_string() an.
PHP-Code:

$_POST['Name'] = mysql_real_escape_string($_POST['Name']); 


N'Koto Zinde 30.08.2007 00:34:18

AW: Problem mit htmlentities()
 
so danke schon mal für die vielen antworten.

das es am zeichensatz liegt, dacht ich mir bereits, aber wie kann ich denn den zeichensatz anders festlegen außer so:

HTML-Code:

<meta http-equiv='Content-Type' content='text/html; charset=ISO-8859-1' />
in anderen dokumenten von mir funktioniert das auch. nur in diesem einen eben nicht. kann es vielleicht daran liegen, dass ich die ganzen kram mit htmlentities() und Zeichensatz erst später in das Dokument hinzugefügt habe? Allerdings finde ich auch keine Unterschiede zwischen den Dokumenten in denen es funktioniert und in denen in dens nicht funktioniert. (Oder ich weiß nicht nach was ich suchen soll...)

vielleicht noch jemand ne Idee??

PS: Es geht ja mir nicht nur darum die Daten schön in der Datenbank zu speichern, sondern auch wieder abzufragen und schön ausgeben zulassen. (und bei xhtml transitional sind umlaute in quelltext verboten )

z0iD 30.08.2007 01:11:14

AW: Problem mit htmlentities()
 
Ähm
Zitat:

Zitat von z0iD (Beitrag 105815)
Nachtrag:
Hast Du mal versucht das "ä" in ein int umzuwandeln und dann mal auszugeben? Diese Zahl solltest Du dann mal mit dem Index vergleichen, den das "ä" in dem von Dir gewählten Zeichensatz haben sollte.


N'Koto Zinde 30.08.2007 11:53:06

AW: Problem mit htmlentities()
 
PHP-Code:

$var "ä";

settype $var'integer' );

echo 
$var

heraus kommt '0'
und jetzt?


Alle Zeitangaben in WEZ +2. Es ist jetzt 23:19:25 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.