2016-05-12 66 views
3

我試圖調試一個遺留的php腳本(),它被設計成通過命令行運行。該腳本設計爲帶有1個可選參數,後跟N個選項。它的意圖是以下兩種情況都應該起作用。如何在php shell腳本中使用參數和選項

案例1:參數的選項:

php script.php <argument> --option-a=tuesdays --option-b 

案例2:選擇無參數:

php script.php --option-c 

在腳本中使用以下參數和選項是牽強:

$argument = (strpos($argv[1], '-') === 0) ? '' : $argv[1]; 
$options = getopt('', [ 
    'option-a:', 
    'option-b', 
    'option-c', 
]); 

情況2總是按預期工作。我收到選項並且參數是空的。

情況1未按預期工作。我收到了參數,但$ options數組總是空的。

我見過the suggestion that reverses the order of the options and arguments,所以我打電話給php script --option-c <argument>。我不想改變它被調用的方式,因爲這是一個遺留的腳本,可以用於善意知道的地方。

有沒有一種方法可以使用getopt()來獲取可以糾正案例1的選項?

回答

3

我通過http://php.net/getopt找到了自己的答案。 RTM。

選項的解析將在找到的第一個非選項結尾 後面的任何內容都將被丟棄。