PHP 想要像 Perl、Python 可以單行執行,或者是 cat、tail -f 持續餵資料給程式接收,要怎麼做呢?
範例取自:Decoding URL encoding (percent encoding)
- alias urldecode='python -c "import sys, urllib as ul; print ul.unquote_plus(sys.argv[1])"'
- alias urlencode='python -c "import sys, urllib as ul; print ul.quote_plus(sys.argv[1])"'
- urldecode 'q+werty%3D%2F%3B'
- q werty=/;
- $ urlencode 'q werty=/;'
- q+werty%3D%2F%3B
PHP 於 CLI 單行直接執行的用法
PHP 於 CLI 要在單行執行,或者持續餵入資料的方式,有下述幾個參數可以做:
- --run code
- -r code Run PHP code without using script tags ''
- php -r 'echo "Hello World\n";'
- // 測試看看 extension 是否存在可以使用
- php -r 'printr(gdinfo());'
- php -r 'printr(dbahandlers(1));'
- -E (--process-end) Run PHP end_code after processing all input lines
- cat filename.txt | php -E 'echo "Lines: $argi\n";'
這麼多參數,比較難記憶,在這邊先用簡單的記憶法,只要記憶 -r 和 -R 即可,如下述範例:
多行,持續餵資料
- sudo tail -f /var/log/apache2/access.log | php -R 'echo urldecode(fgets(STDIN));'
單行
- echo "http://" | php -r "echo urlencode(fgets(STDIN));"
- -r code Run PHP code without using script tags ''