Klausi: Hex-Ausgabe eines Textes

Hallo,

zur Ausgbe von Debug-Infos verwende ich echo "...

Was kann ich verwenden um nicht druckbare Zeichen mit auszugeben?

  1. Hallo Klausi,

    Was kann ich verwenden um nicht druckbare Zeichen mit auszugeben?

    Kommt drauf an.

    "Was kann ich verwenden, um mein Auto anzutreiben?" - das kann ich auch nicht beantworten, ohne dass Du mir sagst, ob es ein E-Auto oder ein Verbrenner ist. Oder vielleicht ein Fahrzeug vom Autoscooter oder vom Kinderkarussell. Oder gar ein Auto von der Darda-Bahn?

    Im Titel schriebst Du "Hex-Darstellung". Sicherlich möchtest Du nicht stumpf den ganzen String als Hexfolge darstellen. Das ginge mit bin2hex().

    Die Lösung hängt deshalb davon ab, wie der String codiert ist und welcher Art diese "Nichtdruckbarkeit" ist.

    Du müsstest also schon Kontext herausgeben.

    • Wie ist der String codiert? In einem UTF-8 codierten String ist ein "undefiniertes Zeichen" ganz anders zu identifizieren als in einem ISO-8859-* codierten String.
    • Wo kommt er her, wie kommen die nicht druckbaren Zeichen zu Stande?

    Das sind nur die Einstiegsfragen…

    Rolf

    --
    sumpsi - posui - obstruxi
    1. Autsch! Codiert?

      Ich habe ein Programm übernommen, Autor nicht mehr verfügbar. Was ich wissen möchte ist, ob in dem Text, der im mail ausgegeben werden soll, irgendwelche Zeilenwechselzeichen \r und/oder \n stecken.

      1. Hallo Klausi,

        ja gut. Wie wär's, wenn Du danach suchst und dann diesen Sachverhalt ausgibst? Die Primitiv-Funktionen aus der C Runtime Library, die PHP mitbringt, tun dafür gute Dienste.

        if (strpbrk($mailbody, "\r\n") !== FALSE) {
           echo "Mail enthält CR oder LF\n";
        }
        

        oder so

        if (strcspn($mailbody, "\r\n") < strlen($mailbody)) {
           echo "Mail enthält CR oder LF\n";
        }
        

        Oder musst Du es wirklich ganz genau wissen? So könnte es auch gehen:

        echo str_replace(["\r", "\n"], ["{CR}", "{LF}"], $mailbody);
        

        Rolf

        --
        sumpsi - posui - obstruxi
        1. Hallo Rolf, danke, das hat mein jetziges Problem gelöst. Allerdings kenne ich aus anderen Anwendungen, dass man einen Text auch komplett in Hexadedimaler Form ausgeben kann (z.B. Hex-Editoren).

          1. Hallo Klausi,

            ja. Dafür kannst Du bin2hex() verwenden.

            Rolf

            --
            sumpsi - posui - obstruxi