Chris: htmlentities()

Hi Leute,

hat mal von Euch jemand

echo htmlentities('</a>', ENT_QUOTES);

bei verschiedenen PHP-Versionen benutzt?

Bei mir (Ver 4.3.3.) kommt da immer

&lt;/a& gt;

dabei heraus, also ein Leerzeichen zwischen dem & und dem gt;

Kann man das irgendwie reparieren, ohne die Version upzudaten?

LG
Chris

  1. Hallo Chris,

    echo htmlentities('</a>', ENT_QUOTES);

    bei verschiedenen PHP-Versionen benutzt?

    Bei mir (Ver 4.3.3.) kommt da immer

    &lt;/a& gt;

    Also unter PHP Version 4.3.2 kann ich dein Problem nicht nachvollziehen.

    Grüsse
    Frankie

  2. Hallo Chris,

    Kann man das irgendwie reparieren, ohne die Version upzudaten?

    ach, reparieren wolltest Du das auch noch ;-)

    $str = htmlentities('</a>', ENT_QUOTES);
    echo str_replace("& gt;", "&gt;" ,$str);

    Grüsse
    Frankie

    1. Hi,

      Kann man das irgendwie reparieren, ohne die Version upzudaten?

      ach, reparieren wolltest Du das auch noch ;-)

      $str = htmlentities('</a>', ENT_QUOTES);
      echo str_replace("& gt;", "&gt;" ,$str);

      Jau, dann sollte ich aber viellicht gleich

      str_replace('</a>', '&lt;/a&gt;' ,$str);

      benutzen, dann wird wirklich das ersetzt, was ersetzt werden sollte.
      Aber es könnte ja auch jemand </a > geschrieben haben, oder würde dieser Schließtag sowieso falsch sein?

      LG
      Chris

      1. Hallo Chris,

        Jau, dann sollte ich aber viellicht gleich

        str_replace('</a>', '&lt;/a&gt;' ,$str);

        benutzen, dann wird wirklich das ersetzt, was ersetzt werden sollte.
        Aber es könnte ja auch jemand </a > geschrieben haben, oder würde dieser Schließtag sowieso falsch sein?

        Nein, denn dein Problem bezieht sich auf ein Leerzeichen _innerhalb_ einer entity und nicht auf ein Leerzeichen im </a>-Tag.

        &lt;/a& gt; != &lt;/a &gt;

        Grüsse
        Frankie

        1. Hi,

          Jau, dann sollte ich aber viellicht gleich

          str_replace('</a>', '&lt;/a&gt;' ,$str);

          benutzen, dann wird wirklich das ersetzt, was ersetzt werden sollte.
          Aber es könnte ja auch jemand </a > geschrieben haben, oder würde dieser Schließtag sowieso falsch sein?

          Nein, denn dein Problem bezieht sich auf ein Leerzeichen _innerhalb_ einer entity und nicht auf ein Leerzeichen im </a>-Tag.

          &lt;/a& gt; != &lt;/a &gt;

          Das ist nicht die ganze Wahrheit.

          Ich will erreichen, dass alle zulässigen Schließtags für <a ... > ersetzt werden. Wenn nun ein </a    > zulässig wäre oder aber regelmäßig von Browsern als zulässig engesehen würde, müsste es auch sicher erkannt werden und ersetzt!

          Man kann das Problem also nicht nur auf den vermeintlichen Fehler von PHP reduzieren, sondern muss es etwas umfassender betrachten.

          LG
          Chris

          1. Hallo Chris,

            Ich will erreichen, dass alle zulässigen Schließtags für <a ... > ersetzt werden. Wenn nun ein </a    > zulässig wäre oder aber regelmäßig von Browsern als zulässig engesehen würde, müsste es auch sicher erkannt werden und ersetzt!

            Und was hat das bitteschön mit htmlentities() zu tun?

            Ich glaube Du suchst reguläre Ausdrücke:
            http://de.php.net/manual/de/function.preg-match.php oder http://de.php.net/manual/de/function.preg-replace.php
            dürften dir weiterhelfen.

            Man kann das Problem also nicht nur auf den vermeintlichen Fehler von PHP reduzieren, sondern muss es etwas umfassender betrachten.

            Ich bezweifle stark, daß dieser Fehler, zumindest so wie von dir im OP geschildert, überhaupt auftritt. Geeignete Werkzeuge um dein Problem umfassender anzugehen habe ich dir weiter oben schon genannt.

            Grüsse
            Frankie