PHP 於 CLI 單行直接執行的用法

PHP 想要像 Perl、Python 可以單行執行,或者是 cat、tail -f 持續餵資料給程式接收,要怎麼做呢?

範例取自:Decoding URL encoding (percent encoding)

  1. alias urldecode='python -c "import sys, urllib as ul; print ul.unquote_plus(sys.argv[1])"'
  2. alias urlencode='python -c "import sys, urllib as ul; print ul.quote_plus(sys.argv[1])"'
  3. urldecode 'q+werty%3D%2F%3B'
    • q werty=/;
  4. $ 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));"

Save

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料