1. $argv 從命令行參數列表中獲取選項
主要來源於類似c裏面的
int main(int $argc, char * argv[]){
//some codes;
return 0;
}
故$argv[0]即表示文件本身
$argv[1]表示第一個參數
$argv[2]表示第二個參數
後面參數以此類推。
2 getopt 從命令行參數列表中獲取選項
說明
array getopt ( string $options
[, array $longopts
[, int &$optind
]] )
解析傳入腳本的選項。
參數
options
該字符串中的每個字符會被當做選項字符,匹配傳入腳本的選項以單個連字符(-)開頭。 比如,一個選項字符串 "x" 識別了一個選項 -x。 只允許 a-z、A-Z 和 0-9。
longopts
選項數組。此數組中的每個元素會被作爲選項字符串,匹配了以兩個連字符(--)傳入到腳本的選項。 例如,長選項元素 "opt" 識別了一個選項 --opt。
optind
If the optind
parameter is present, then the index where argument parsing stopped will be written to this variable.
options
可能包含了以下元素:
- 單獨的字符(不接受值)
- 後面跟隨冒號的字符(此選項需要值)
- 後面跟隨兩個冒號的字符(此選項的值可選)
選項的值是字符串後的第一個參數。如果需要一個值,它不介意值之前是否有前置的空格,參見以下內容。
Note: 選項的值不接受空格(" ")作爲分隔符。
Note:
options
和longopts
的格式幾乎是一樣的,唯一的不同之處是longopts
需要是選項的數組(每個元素爲一個選項),而options
需要一個字符串(每個字符是個選項)。
返回值
此函數會返回選項/參數對, 或者在失敗時返回 FALSE
。
Note:
選項的解析會終止於找到的第一個非選項,之後的任何東西都會被丟棄。
7.1.0 | 添加 optind 參數。 |
5.3.0 | 支持 "=" 作爲 參數和值的分隔符。 |
5.3.0 | 增加了可選值的支持(用"::"指定)。 |
5.3.0 | 參數 longopts 在所有系統平臺上均可用。 |
5.3.0 | 此函數不再依賴於操作系統,現在也能夠在 Windows 上運行。 |
例如test.php:
<?php
$param = getopt('f:a::e');
print_r($param);
然後執行 php test.php -f a.out -a 5 -e 10
那麼$param['f'] = 'a.out', $param['a'] = '5', 沒有$param['e'],因爲e不接受參數;