Hallo, ich habe mir eine function gebastelt und komme hier nicht weiter.
PHP Notice: Use of undefined constant ENT_DISALLOWED - assumed 'ENT_DISALLOWED' in /vhosts/data.php on line 41
[Wed Dec 10 15:18:34 2014] [warn] [client 62.75.158.31] mod_fcgid: stderr: PHP Warning: htmlentities() expects parameter 2 to be long, string given in vhosts/data.php on line 41
Zeile 41 -> $vstring = htmlentities($vstring, ENT_DISALLOWED, "UTF-8");
Könnt Ihr mir sagen wo da der Fehler ist? Laut den Beispielen sollte das doch gehen.
Ankündigung
Einklappen
Keine Ankündigung bisher.
htmlentities = Notice: Use of undefined constant ENT_DISALLOWED
Einklappen
Neue Werbung 2019
Einklappen
X
-
htmlentities = Notice: Use of undefined constant ENT_DISALLOWED
Stichworte: -
-
Du brauchst eben eine Schnittstelle, die die internen Daten, die wie gesagt in UTF-8 vorliegen sollten, weil das mehr oder weniger der Standard ist, für die Ausgabe dann in eine Form umwandelt, die mit dem Ausgabe-Charset kompatibel ist.
Diese Schnittstelle muss zwei Sachen können:
1. Daten so aufbereiten, dass sie mit dem Charset kompatibel sind.
2. Daten so aufbereiten, dass sie mit dem Charset kompatibel sind und dass dazu noch für HTML syntaktisch relevante Zeichen entsprechend escapet werden.
Wenn du etwas ausgeben möchtest, das HTML enthalten darf, dann Variante 1. Ansonsten Variante 2.
Was du mit Arrays und Regular Expressions meinst, weiß ich gerade nicht.
-
Ja, klar mit dem Design. Wollte damit eher sagen das es nicht in meiner Macht steht was die als nächstes vorhaben. Soll ja nur den Spider machen.
Eigentlich hatte ich ja alles fertig und lief auch ohne Einwand. Im Localhost hatte ich nur eine Aktuellere PHP Version als die auf dem Server.
Alternative fällt mir da jetzt nur array und preg_replace ein.
Einen Kommentar schreiben:
-
Ja, die Überlegung ergibt leider wenig Sinn, sync2014. Die Charset-Parameter beziehen sich nicht auf das Charset der auszuliefernden HTML-Seite, sondern auf das Charset/Encoding der zu konvertierenden Eingabe ($vstring bei dir).
Der Code, den ich gepostet habe, konvertiert gewissermaßen von UTF-8 nach 7-Bit-ASCII, was die kleinste gemeinsame Untermenge vieler Charsets ist.
Du solltest zumindest im PHP-Code immer in UTF-8 arbeiten und erst dann in das benötigte Ziel-Charset konvertieren, während du die HTML-Ausgabe generierst. Das wird schon schwierig genug. Dann auch noch deinen eigentlichen PHP-Code so zu schreiben, dass er mit Strings in verschiedenen Charsets arbeiten kann, wäre noch mal komplizierter (falls überhaupt irgendwie sinnvoll möglich) und ist zudem eben unnötig.
Einen Kommentar schreiben:
-
Charset hat niegarnimmernichtnix mit Design oder dessen Implementierung zu tun.
Einen Kommentar schreiben:
-
PHP-Code:mb_convert_encoding(htmlentities($vstring, ENT_QUOTES), "HTML-ENTITIES");
Kann ja sein das die bald das Design ändern und der charset dann auf dem Standard steht oder auch nicht.
from_encoding
Is specified by character code names before conversion. It is either an array, or a comma separated enumerated list. If from_encoding is not specified, the internal encoding will be used.
Einen Kommentar schreiben:
-
Ich weiß nicht, ob das hilft, aber man kann wohl so was machen:
PHP-Code:$s = 'abcäöü€→“”☺<>';
$escaped = mb_convert_encoding(
htmlspecialchars($s, ENT_QUOTES, 'UTF-8'),
'HTML-ENTITIES',
'UTF-8'
);
var_dump($escaped);
// abcäöü€→“”☺<>
Kommentar in der php.de-Doku dazu:
Note that `mb_convert_encoding($val, 'HTML-ENTITIES')` does not escape '\'', '"', '<', '>', or '&'.
Damit muss man nur vor dem Konvertieren schon escapen, weil die Konversion ihrerseits zu escapende Zeichen (&) generiert, die sonst doppelt escapet würden. Das ist leider ziemlich unpraktisch.
Das heißt, man braucht noch mal eine Extra-Funktion ohne das htmlspecialchars, um „unescapte“ UTF-8-Strings[1] in eine Nicht-UTF-8-HTML-Seite einzufügen. (1: Also Strings, die HTML-Markup enthalten dürfen.)
Es ist ziemlich schwierig, Software zu schreiben, die mit verschiedenen Charsets funktioniert.
Einen Kommentar schreiben:
-
Hast Du Dir die mal angesehen: Multibyte String Functions. Danke euch
Einen Kommentar schreiben:
-
-
Wer verwendet denn heutzutage noch eine ISO-Codierung? Wäre es nicht die sinnvollste Lösung, die eine Seite auf UTF-8 umzustellen?
Einen Kommentar schreiben:
-
Wer verwendet denn heutzutage noch eine ISO-Codierung?Ärgert mich auch immer wieder, aber lässt sich tlw. nicht so ohne weiteres ändern...
Einen Kommentar schreiben:
-
Wer verwendet denn heutzutage noch eine ISO-Codierung? Wäre es nicht die sinnvollste Lösung, die eine Seite auf UTF-8 umzustellen?
Einen Kommentar schreiben:
-
Ich soll für zwei Homepages einen Spider für eine gemeinsame suche erstellen. Die eine ist in UTF-8 die andere in iso-8859-15. Die Ausgabe (und Datenbank) in der suche ist UTF-8. Also dachte ich das htmlentities() der richtige Weg ist.
Einen Kommentar schreiben:
-
Also eigentlich würde ich dir raten, die Version abzugraden, weil php 5.4 ist eigentlich minimum, 5.5 am besser und 5.6 hab ich noch nicht getestet.
Wenn das warum auch immer nicht geht nimm doch einfach ENT_QUOTES, das sollte alles konvertieren.
Einen Kommentar schreiben:
Einen Kommentar schreiben: