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.
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.
Kommentare
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.
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
message=`sed -e "s/ /%20/g" /tmp/message.tmp`
Mit dem Tmpfile kann ich leben. Allerdings haut das ganze bei den Umlauten nicht hin.