URL encoding a string in bash script
On CentOS, no extra package needed:
python -c "import urllib;print urllib.quote(raw_input())" <<< "$message"
Extending Rockallite's very helpful answer for Python 3 and multiline input from a file (this time on Ubuntu, but that shouldn't matter):
cat any.txt | python3 -c "import urllib.parse, sys; print(urllib.parse.quote(sys.stdin.read()))"
This will result in all lines from the file concatenated into a single URL, the newlines being replaced by %0A
.
You want $MESSAGE
to be in double-quotes, so the shell won't split it into separate words, then pass it to PHP as an argument:
ENCODEDMESSAGE="$(php -r 'echo rawurlencode($argv[1]);' -- "$MESSAGE")"