Dirk: UTF-8 und das Ampersand &

Hi,

ich versuche, einen Text den ich aus einer MySQL lese auszugeben. Zeichenkodierung ist UTF-8. Der Text kann HTML enthalten, das soll auch so eingesetzt und nicht mit htmlentities umgewandelt werden.

Jetzt meckert der Browser allerdings, wenn das Ampersand & zum Einsatz kommt. Ich möchte also nur dieses Zeichen umwandeln. Habe es also versucht mit
$text = str_replace('&', '&amp', $text);
Nur scheint str_replace nicht ganz mit UTF-8 zurecht zu kommen, er wandelt mir also auch alle möglichen anderen Zeichen in ihre HTML Entities um. Die werden dann leider auch so im Browser angezeigt. Habe auch schon probiert utf8_decode davor und utf8_encode dahinter zu stellen, löst nur leider mein Problem nicht. Wer kann helfen?

  1. Hi,

    $text = str_replace('&', '&amp', $text);
    Nur scheint str_replace nicht ganz mit UTF-8 zurecht zu kommen, er wandelt mir also auch alle möglichen anderen Zeichen in ihre HTML Entities um.

    Du meinst vermutlich, wenn bereits &entity; im Text steht, wird dann natuerlich &entity; daraus?

    Das ist absolut kein UTF-8 Problem, sondern eins deines Umgangs mit den Daten.

    abe auch schon probiert utf8_decode davor und utf8_encode dahinter zu stellen, löst nur leider mein Problem nicht.

    Natuerlich nicht, s.o.

    MfG ChrisB

    --
    „This is the author's opinion, not necessarily that of Starbucks.“
    1. Nein, ich meine das schon wie ich es (zu) sage(n versuche). &entity; gibt es im Text nicht, aber beispielsweise ' oder den längeren Gedankenstrich -. Diese werden in &sonstwas; umgewandelt, obwohl ich mit str_replace nur das & umwandle.

      1. Hi,

        Nein, ich meine das schon wie ich es (zu) sage(n versuche). &entity; gibt es im Text nicht, aber beispielsweise ' oder den längeren Gedankenstrich -. Diese werden in &sonstwas; umgewandelt, obwohl ich mit str_replace nur das & umwandle.

        Das kann nicht sein.
        Dann hast du noch irgendwo anders einen Aufruf von htmlentities oder sowas drin.

        MfG ChrisB

        --
        „This is the author's opinion, not necessarily that of Starbucks.“
      2. Hi,

        Nein, ich meine das schon wie ich es (zu) sage(n versuche). &entity; gibt es im Text nicht, aber beispielsweise ' oder den längeren Gedankenstrich -. Diese werden in &sonstwas; umgewandelt, obwohl ich mit str_replace nur das & umwandle.

        das kann nicht sein. Wenn du wirklich nur "&" durch "&amp" ersetzt (nebenbei fehlt das abschließende Semikolon), dann wird davon sonst nichts beeinträchtigt. Es sei denn eben, du hast doch Zeichen als Entity-Referenzen im Quelltext (etwa ' oder &ndash, um deine Beispiele aufzugreifen). Zeig uns das Problem doch mal live (online)!

        Anyway, mit UTF-8 hat das jedenfalls nichts zu tun.

        So long,
         Martin

        --
        Wenn man sieht, was der liebe Gott auf der Erde so alles zulässt, hat man das Gefühl, er experimentiert immer noch.
          (Sir Peter Ustinov, Charakterdarsteller, 2004 verstorben)