Sur CentOS, aucun package supplémentaire n'est nécessaire :
python -c "import urllib;print urllib.quote(raw_input())" <<< "$message"
Extension de la réponse très utile de Rockallite pour Python 3 et entrée multiligne à partir d'un fichier (cette fois sur Ubuntu, mais cela ne devrait pas avoir d'importance) :
cat any.txt | python3 -c "import urllib.parse, sys; print(urllib.parse.quote(sys.stdin.read()))"
Cela entraînera la concaténation de toutes les lignes du fichier en une seule URL, les nouvelles lignes étant remplacées par %0A
.
Vous voulez $MESSAGE
être entre guillemets doubles, afin que le shell ne le divise pas en mots séparés, puis le passe à PHP en tant qu'argument :
ENCODEDMESSAGE="$(php -r 'echo rawurlencode($argv[1]);' -- "$MESSAGE")"