Unter CentOS wird kein zusätzliches Paket benötigt:
python -c "import urllib;print urllib.quote(raw_input())" <<< "$message"
Erweiterung der sehr hilfreichen Antwort von Rockallite für Python 3 und mehrzeilige Eingabe aus einer Datei (diesmal auf Ubuntu, aber das sollte keine Rolle spielen):
cat any.txt | python3 -c "import urllib.parse, sys; print(urllib.parse.quote(sys.stdin.read()))"
Dadurch werden alle Zeilen der Datei zu einer einzigen URL verkettet, wobei die Zeilenumbrüche durch %0A
ersetzt werden .
Sie wollen $MESSAGE
in doppelte Anführungszeichen zu setzen, damit die Shell es nicht in einzelne Wörter aufteilt, und es dann als Argument an PHP weitergibt:
ENCODEDMESSAGE="$(php -r 'echo rawurlencode($argv[1]);' -- "$MESSAGE")"