Ankündigung

Einklappen
Keine Ankündigung bisher.

htmlentities = Notice: Use of undefined constant ENT_DISALLOWED

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • htmlentities = Notice: Use of undefined constant ENT_DISALLOWED

    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.

  • mermshaus
    antwortet
    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.

    Einen Kommentar schreiben:


  • sync2014
    antwortet
    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:


  • mermshaus
    antwortet
    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:


  • tr0y
    antwortet
    Charset hat niegarnimmernichtnix mit Design oder dessen Implementierung zu tun.

    Einen Kommentar schreiben:


  • sync2014
    antwortet
    PHP-Code:
    mb_convert_encoding(htmlentities($vstringENT_QUOTES), "HTML-ENTITIES"); 
    Hab das Probiert. Scheint zu Funktionieren. Auch wenn ich nicht angebe welchen charset geändert werden soll.
    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:


  • mermshaus
    antwortet
    Ich weiß nicht, ob das hilft, aber man kann wohl so was machen:

    PHP-Code:
    $s 'abcäöü€→“”☺<>';

    $escaped mb_convert_encoding(
        
    htmlspecialchars($sENT_QUOTES'UTF-8'),
        
    'HTML-ENTITIES',
        
    'UTF-8'
    );

    var_dump($escaped);
        
    // abc&auml;&ouml;&uuml;&euro;&rarr;&ldquo;&rdquo;☺&lt;&gt; 
    (Der Smiley im Kommentar im Code-Block ist eigentlich &#9786;. Das verändert die Forensoftware immer.)

    Kommentar in der php.de-Doku dazu:

    Note that `mb_convert_encoding($val, 'HTML-ENTITIES')` does not escape '\'', '"', '<', '>', or '&'.
    - http://php.net/manual/en/function.mb...ding.php#92426

    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:


  • sync2014
    antwortet
    Hast Du Dir die mal angesehen: Multibyte String Functions
    Ich fange gleich Morgen damit an . Danke euch

    Einen Kommentar schreiben:


  • Arne Drews
    antwortet
    Hast Du Dir die mal angesehen: Multibyte String Functions

    Einen Kommentar schreiben:


  • sync2014
    antwortet
    Wer verwendet denn heutzutage noch eine ISO-Codierung? Wäre es nicht die sinnvollste Lösung, die eine Seite auf UTF-8 umzustellen?
    Wär ich auch für. Aber das will er nicht.

    Einen Kommentar schreiben:


  • Arne Drews
    antwortet
    Wer verwendet denn heutzutage noch eine ISO-Codierung?
    Immer noch ganz beliebt, wenns um ASP.NET geht Ärgert mich auch immer wieder, aber lässt sich tlw. nicht so ohne weiteres ändern...

    Einen Kommentar schreiben:


  • ChristianK
    antwortet
    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:


  • sync2014
    antwortet
    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:


  • tr0y
    antwortet
    Wieso encodest du ?

    Einen Kommentar schreiben:


  • Unlikus
    antwortet
    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:

Lädt...
X