Andreas: Copyrightzeichen mit regex ersetzen

Hallo!

Ich versuche das Coprightzeichen durch (c) in meinem Text zu ersetzen:

$article->text = preg_replace("/\xA9/i", "(c)", $article->text);

Das Symbol wir aber nicht ersetzt.
Was mache ich falsch?

Danke im Voraus!
Andreas

  1. Was mache ich falsch?

    warum ein regulärer ausdruck für ein einzelnes, feststehendes zeichen?

    str_replace('©', '(c)', $article->text);

    1. warum ein regulärer ausdruck für ein einzelnes, feststehendes zeichen?

      str_replace('©', '(c)', $article->text);

      Hm. Ich dachte, damit mach ich mich abhängig von der Zeichencodierung?

      1. Yerf!

        str_replace('©', '(c)', $article->text);

        Hm. Ich dachte, damit mach ich mich abhängig von der Zeichencodierung?

        Diese Abhängigkeit hast du auch bei deinem regexp. Vermutlich funktioniert der nicht, weil dein Text UTF-8 (oder eine andere Codierung, bei der das Zeichen nicht den Hexcode A9 hat) ist.

        Gruß,

        Harlequin

        --
        <!--[if IE]>This page is best viewed with a webbrowser. Get one today!<![endif]-->
        1. Diese Abhängigkeit hast du auch bei deinem regexp. Vermutlich funktioniert der nicht, weil dein Text UTF-8 (oder eine andere Codierung, bei der das Zeichen nicht den Hexcode A9 hat) ist.

          Ich verstehe. Dann werde ich wohl noch die Zeichencodierung mit einbeziehen müssen.

          Vielen Dank!

          1. Hello,

            Diese Abhängigkeit hast du auch bei deinem regexp. Vermutlich funktioniert der nicht, weil dein Text UTF-8 (oder eine andere Codierung, bei der das Zeichen nicht den Hexcode A9 hat) ist.

            Ich verstehe. Dann werde ich wohl noch die Zeichencodierung mit einbeziehen müssen.

            Du wirst alle möglichen Zeichenkodierungen der Zieldatei berücksichtigen müssen und eventuell auch über tolerante Behandlung nachdenken müssen.

            Außerdem solltest Du unbedingt die Kodierung der PHP-Datei beachten, die die Arbeit vornehmen soll, damit nicht noch mehr Chaos entsteht.

            Ein harzliches Glückauf

            Tom vom Berg

            --
            Nur selber lernen macht schlau
            http://bergpost.annerschbarrich.de
            1. Sorry, aber ich bekomme es immer noch nicht hin. Selbst ein
              $article->text = str_replace('©', '(c)', $article->text);
              funktioniert nicht. Das Zeichen bleibt wie es ist.

              Es handelt sich um einen Artikel im CMS Joomla, den ich mit einer onPrepareContent-Funktion parse. Der Content kommt also aus einer DB, die Kollation ist utf8_general_ci.

              Komisch...

              1. Hello,

                Sorry, aber ich bekomme es immer noch nicht hin. Selbst ein
                $article->text = str_replace('©', '(c)', $article->text);
                funktioniert nicht. Das Zeichen bleibt wie es ist.

                Es handelt sich um einen Artikel im CMS Joomla, den ich mit einer onPrepareContent-Funktion parse. Der Content kommt also aus einer DB, die Kollation ist utf8_general_ci.

                Dann hilft nur debuggen!

                Also Kontrollausgaben anfertigen aller Variablen aus demselben Script heraus mit definierter und nachvollziehbarer Kodierung, Darstellung am besten als Hexcode...

                Liebe Grüße aus Syburg bei Dortmund

                Tom vom Berg

                --
                Nur selber lernen macht schlau
                http://bergpost.annerschbarrich.de
      2. Moin!

        warum ein regulärer ausdruck für ein einzelnes, feststehendes zeichen?

        str_replace('©', '(c)', $article->text);

        Hm. Ich dachte, damit mach ich mich abhängig von der Zeichencodierung?

        Du bist sowieso immer abhängig von der Zeichencodierung. Sie nicht zu beachten bzw. keinerlei Angaben zu ihr zu machen und keinen Gedanken dran zu verschwenden führt ins sichere Chaos.

        - Sven Rautenberg

        --
        "Love your nation - respect the others."