如何讓PHP指令碼在cli模式下執行時可接受選項和值的輸入

來源:互聯網
上載者:User
用慣了Linux系統的使用者應該都知道,Linux的很多命令都支援選項和值的輸入,例如 rm -f hello.txtls -alnetstat -tnl等,那麼如何讓PHP指令碼在cli模式下執行時也支援選項和值的輸入呢?有兩種方法:

使用getopt()函數

假設現在需要一個PHP指令碼支援三個選項的輸入:
-a:不接受值輸入
-b:接受值輸入
-c:接受值輸入,並該值可選

根據上述要求,可以編寫PHP指令碼:

functionmain($args) {    var_dump($args);}/* * 選項字元後面不帶冒號,表示該選項不支援值輸入 * 選項字元後面帶一個冒號,表示該選項支援值輸入 * 選項字元後面帶兩個冒號,表示該選項支援值輸入,且值可選 */$args = getopt('ab:c::');main($args);

然後使用命令執行該指令碼,這裡以Linux為例,並假設指令碼名為test.php,注意./php和test.php之間不需要-f選項:
./php test.php -a -b=valueOfB -c=valueOfC

輸出:

因為c選項的值是可選的,我們試一下c選項不傳值會是什麼情況:

可以看到,沒有值的選項對應的數組value是false

在這裡要注意一點,選項和值之間是使用等號“=”串連的,或者把等號省略掉也可以,不可以使用空格來分割選項和值,例如-b valueOfB,否則可能會擷取不到值。

getopt()還支援兩個橫杠開頭的選項,例如--a,詳細資料可以參考getopt()的第二個參數$longopts

使用$argv變數

如果只是單純的想往指令碼傳遞一些值,那麼可以使用$argv這個變數,關於這個變數的詳細資料,可以參閱:http://php.net/manual/zh/reserved.variables.argv.php

PHP指令碼:

var_dump($argv);

執行命令./php test.php valueOfA valueOfB valueOfC

輸出:

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

以上就介紹了如何讓PHP指令碼在cli模式下執行時可接受選項和值的輸入,包括了方面的內容,希望對PHP教程有興趣的朋友有所協助。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.