Von PHP zu Unix Shell

Dienstag, 16. Oktober 2007

Kann mir jemand sagen wie ich "$message=urlencode($foobar["message"]);" (PHP) am einfachsten in BASH ausdrücke? SED reicht mir zwar wenn es um das Leerzeichen geht, allerdings gibt es ja doch einiges an Sonderzeichen.

Trackbacks


Trackback-URL für diesen Eintrag
    Keine Trackbacks

Kommentare


    #1 Georg am 10/16/07 um 04:38 [Antwort]
    *Ich hab sowas auch mal gemacht, der erste Ansatz war, mit den Rechenfunktionen der Bash die Sonderzeichen in ihre Hex Entsprechung zu konvertieren und dann als %HEX wieder in den String einzufügen. Das hatte leider eine extrem schlechte Performance gehabt und hat auch bei längeren Strings mies skaliert.
    Der nächste Ansatz war ein großer switch über alle sonderzeichen, der diese in ihre entsprechung umwandelt. das war zwar viel schreibarbeit, aber hatte eien extrem gute performance und hat auch sehr gut skaliert.
    #2 Doomshammer am 10/16/07 um 04:55 [Antwort]
    *Mit Perl natuerlich:

    echo "Dies ist '' ein Test" | perl -pi -le 's/([^A-Za-z0-9])/sprintf("%%%02X", ord($1))/seg;'

    Dies%20ist%20%27%27%20ein%20Test
    #2.1 Georg am 10/17/07 um 08:49 [Antwort]
    *Das ist ja geschummelt, Perl ist nicht Bash, und das war doch die Aufgabenstellung
    #2.2 laemmy am 10/17/07 um 10:31 [Antwort]
    *Danke, doch wie gesagt wollt ich es in BASH machen.

    message=`sed -e "s/ /%20/g" /tmp/message.tmp`

    Mit dem Tmpfile kann ich leben. Allerdings haut das ganze bei den Umlauten nicht hin.

Kommentar schreiben

Die angegebene E-Mail-Adresse wird nicht dargestellt, sondern nur für eventuelle Benachrichtigungen verwendet.

Um maschinelle und automatische Übertragung von Spamkommentaren zu verhindern, bitte die Zeichenfolge im dargestellten Bild in der Eingabemaske eintragen. Nur wenn die Zeichenfolge richtig eingegeben wurde, kann der Kommentar angenommen werden. Bitte beachten Sie, dass Ihr Browser Cookies unterstützen muss, um dieses Verfahren anzuwenden.
CAPTCHA

Sie können [geshi lang=LANG][/lang] Tags verwenden um Quellcode abhängig von der gewählten Programmiersprache einzubinden
HTML-Tags werden in ihre Entities umgewandelt.