CentOS では、追加のパッケージは必要ありません:
python -c "import urllib;print urllib.quote(raw_input())" <<< "$message"
Python 3 およびファイルからの複数行入力に対する Rockallite の非常に役立つ回答の拡張 (今回は Ubuntu ですが、それは問題ではありません):
cat any.txt | python3 -c "import urllib.parse, sys; print(urllib.parse.quote(sys.stdin.read()))"
これにより、ファイルのすべての行が 1 つの URL に連結され、改行が %0A
に置き換えられます。 .
$MESSAGE
が必要です 二重引用符で囲み、シェルがそれを個別の単語に分割しないようにしてから、引数として PHP に渡します:
ENCODEDMESSAGE="$(php -r 'echo rawurlencode($argv[1]);' -- "$MESSAGE")"