PHP htmlentities funktioniert nicht, auch mit Parameter
Natürlich wurde vorher gefragt und haben nach Lösungen gesucht, die alle haben nicht funktioniert so weit. Ich wollen, ändern Sie das TM-symbol und das kaufmännische und-Zeichen in die entsprechenden html-equivelents mithilfe htmlentities
oder htmlspecialchars
:
$TEST = "Kold Locker™ & other stuff";
echo "ORGINIAL: " . $TEST . "<BR/>";
echo "HTML: " . htmlentities($TEST, ENT_COMPAT, 'UTF-8');
Zeigt:
ORGINIAL: Kold Locker™ & other stuff
HTML:
Habe ich auch schon versucht es mit htmlspecialchars
und der zweite parameter geändert, mit dem gleichen Ergebnis.
Was bin ich, die anderen haben behauptet, arbeitete in anderen Lösungen?
UPDATE: ich habe versucht, nur die Anzeige utf8_encode($TEST)
und es angezeigt HTML: Kold Locker™ & other stuff
welche version von php?
Legen Sie display_errors auf
Ich habe die Fehlerberichterstattung mit keiner aufgeführt
PHP Version 5.3.3-1ubuntu9.10
Sie sind auf die Prüfung des generierten HTML-Quelltext oder text gerendert, in der Dokument-Ansicht des Browsers?
Legen Sie display_errors auf
1
und einstellen error_reporting auf E_ALL
. Du bist wahrscheinlich immer eine Fehlermeldung.Ich habe die Fehlerberichterstattung mit keiner aufgeführt
PHP Version 5.3.3-1ubuntu9.10
Sie sind auf die Prüfung des generierten HTML-Quelltext oder text gerendert, in der Dokument-Ansicht des Browsers?
InformationsquelleAutor ToddN | 2013-04-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dein code funktioniert bei mir 😕
In der Handbuch-Seite zum
htmlentities()
können wir Lesen:Meine Vermutung ist, dass die input-Daten nicht korrekt als UTF-8 kodiert und die Funktion ist die Rückgabe ein leerer string. (Unter der Annahme, dass das script nicht abstürzt, d.h., code nach, das Teil läuft immer noch.)
htmlentities
InformationsquelleAutor Álvaro González
Ich weiß nicht, warum , dieser arbeitete für mich (htmlentities muss zweimal aufgerufen werden, für mich)
Ausgabe :
InformationsquelleAutor 7-isnotbad
Ich dachte, ich hatte das gleiche problem wie Pjack (msg Jul 14 at 8:54):
gibt im Browser (Firefox in meinem Fall) die ursprüngliche Zeichenkette $str (ohne alle übersetzung), während
gibt:
(Ich benutze PHP/5.4.16 erhalten von windows-7 XAMPP).
Aber nach ein paar mehr Gedanken fiel mir ein, dass der Browser zeigt die Zeichenketten < und > als > und <.
(Siehe Quelltext im browser). Zweiten Aufruf von htmlentities übersetzt & in
&
- und nur dann zeigt der Browser das, was Sie erwartet, in den ersten Platz.InformationsquelleAutor P. Wormer
Ich hatte fast das gleiche problem (in dem irgendwie zeigte es den gleichen text jedes mal) und mit einer Kombination von verschiedenen echos habe ich es. Es scheint, dass Web-Browsern wie firefox zeigen den gleichen text jedes mal. Das ist, weil, wenn Sie
echo
die htmlentities-text umgewandelt werden, wieder in den normalen text, während echo. Wenn ich echo ein script mit der variable/textconsole.log
ged, es tatsächlich echos der text htmlentities (fast) richtig. Anstatt Sie zu ersetzen jedes spezielle char mit html-Codierungen ersetzt em mit einigen anderen Codierung sah ich schon vor (ich kann mich nicht erinnern den Namen). Htmlentities-ing es wieder, bekomme ich den gleichen text echod wieder (Sie erinnern sich, es wandelt alles), aber hallte es in der Konsole.Protokoll-version und gibt Sie mir das erwartete Ergebnis. Jetzt wieder als Ergebnis:1. Ausführen
htmlentities
zwei mal!2. Dont (zumindest mit firefox) echo die htmlentities als normal in die Webseite. Wenn Sie möchten, um zu überprüfen, ob der Wert tatsächlich korrekt, echo ein script, das die logs in der Konsole.
Ich hoffe das konnte helfen, andere Leute mit dem gleichen problem,
VicStudio
BEARBEITEN: 3. Wenn Sie eine
$_POST
formular, vergessen Sie nicht, fügen Sieaccept-charset="UTF-8"
(oder einen anderen Zeichensatz) , die<form>
tag.NOCH MEHR BEARBEITEN: Nur 2 mal
htmlentities
wenn Sie möchten, echo dein Ergebnis normal in die Seite ein. Wenn Sie möchten, direkt schicken, die in f ist.e. eine Datenbank, die es nur einmal tun! -> was ich gesagt habe ist partually falsch. 🙁InformationsquelleAutor VicStudio