getopt
(PHP 4 >= 4.3.0, PHP 5, PHP 7)
getopt — コマンドライン引数のリストからオプションを取得する
説明
getopt
( string $options
[, array $longopts
[, int &$optind
]] ) : array|false
スクリプトに渡されたオプションをパースします。
パラメータ
options
- この文字列の各文字をオプション文字として使用し、 スクリプトにハイフンひとつ (
-
) で始まるオプションとして渡された内容とマッチさせます。 たとえば、オプション文字列"x"
は-x
というオプションを認識します。 a-z、A-Z および 0-9 のみを認識します。 longopts
- オプションの配列。 この配列の各要素をオプション文字列として使用し、 スクリプトにハイフンふたつ (
--
) で始まるオプションとして渡された内容とマッチさせます。 たとえば、longopts の要素"opt"
は--opt
というオプションを認識します。 optind
-
optind
パラメータが与えられると、 引数のパースを止めた時点のインデックスがこの変数に書き込まれます。
options
パラメータに含まれる要素には次のようなものがあります。
- 単一の文字 (値を受け付けない)
- 文字の後にコロンをひとつ続けたもの (値が必須であるパラメータ)
- 文字の後にコロンをふたつ続けたもの (値がオプションであるパラメータ)
オプションの値は、文字列の後の最初の引数となります。 値が必須の場合、その前に空白があるかどうかは関係ありません。
注意:
オプションの値で、
" "
(空白) を区切り文字として使用することはできません。
注意:
options
とlongopts
の書式はほぼ同じです。唯一の違いは、longopts
はオプションの配列 (その各要素がオプションとなる) を受け取るけれどもoptions
は文字列 (その各文字がオプションとなる) を受け取るということです。
返り値
この関数はオプション/引数のペアを連想配列で返します。
失敗した場合に false
を返します。
注意:
オプション以外のものが見つかった時点でオプションのパースは終了し、 それ以降の内容は破棄されます。
変更履歴
バージョン | 説明 |
---|---|
7.1.0 | optind パラメータが追加されました。
|
例
例1 getopt() の例:基本編
<?php// スクリプト example.php$options = getopt("f:hp:");var_dump($options);?>
shell> php example.php -fvalue -h
上の例の出力は以下となります。
array(2) { ["f"]=> string(5) "value" ["h"]=> bool(false) }
例2 getopt() の例:長いオプション
<?php// スクリプト example.php$shortopts = "";$shortopts .= "f:"; // 値が必須$shortopts .= "v::"; // 値がオプション$shortopts .= "abc"; // これらのオプションは値を受け取りません$longopts = array( "required:", // 値が必須 "optional::", // 値がオプション "option", // 値なし "opt", // 値なし);$options = getopt($shortopts, $longopts);var_dump($options);?>
shell> php example.php -f "value for f" -v -a --required value --optional="optional value" --option
上の例の出力は以下となります。
array(6) { ["f"]=> string(11) "value for f" ["v"]=> bool(false) ["a"]=> bool(false) ["required"]=> string(5) "value" ["optional"]=> string(14) "optional value" ["option"]=> bool(false) }
例3 getopt() の例:複数のオプションを一度に渡す
<?php// スクリプト example.php$options = getopt("abc");var_dump($options);?>
shell> php example.php -aaac
上の例の出力は以下となります。
array(2) { ["a"]=> array(3) { [0]=> bool(false) [1]=> bool(false) [2]=> bool(false) } ["c"]=> bool(false) }
例4 getopt() example: Using optind
<?php// Script example.php$optind = null;$opts = getopt('a:b:', [], $optind);$pos_args = array_slice($argv, $optind);var_dump($pos_args);
shell> php example.php -a 1 -b 2 -- test
上の例の出力は以下となります。
array(1) { [0]=> string(4) "test" }