getopt
コマンドライン引数のリストからオプションを取得する
説明
arrayfalse getopt(string $short_options
, array $long_options
= [], int &$rest_index
= null
)
パラメータ
-
short_options
-
この文字列の各文字をオプション文字として使用し、
スクリプトにハイフンひとつ (
-
)
で始まるオプションとして渡された内容とマッチさせます。
たとえば、オプション文字列 "x"
は
-x
というオプションを認識します。
a-z、A-Z および 0-9 のみを認識します。
-
long_options
-
オプションの配列。
この配列の各要素をオプション文字列として使用し、
スクリプトにハイフンふたつ (
--
)
で始まるオプションとして渡された内容とマッチさせます。
たとえば、longopts の要素 "opt"
は
--opt
というオプションを認識します。
-
rest_index
-
rest_index
パラメータが与えられると、
引数のパースを止めた時点のインデックスがこの変数に書き込まれます。
short_options
パラメータに含まれる要素には次のようなものがあります。
- 単一の文字 (値を受け付けない)
- 文字の後にコロンをひとつ続けたもの (値が必須であるパラメータ)
- 文字の後にコロンをふたつ続けたもの (値がオプションであるパラメータ)
オプションの値は、文字列の後の最初の引数となります。
値が必須の場合、その前に空白があるかどうかは関係ありません。
注意:
オプションの値で、" "
(空白) を区切り文字として使用することはできません。
long_options
パラメータに含まれる要素には次のようなものがあります。
- 文字列 (値を受け付けない)
- 文字列の後にコロンをひとつ続けたもの (値が必須であるパラメータ)
- 文字列の後にコロンをふたつ続けたもの (値がオプションであるパラメータ)
注意:
short_options
と
long_options
の書式はほぼ同じです。唯一の違いは、
long_options
はオプションの配列
(その各要素がオプションとなる) を受け取るけれども short_options
は文字列 (その各文字がオプションとなる) を受け取るということです。
戻り値
この関数はオプション/引数のペアを連想配列で返します。
失敗した場合に false
を返します。
注意:
オプション以外のものが見つかった時点でオプションのパースは終了し、
それ以降の内容は破棄されます。
例
例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 の例: rest_index
を使う
<?php
// Script example.php
$rest_index = null;
$opts = getopt('a:b:', [], $rest_index);
$pos_args = array_slice($argv, $rest_index);
var_dump($pos_args);
shell> php example.php -a 1 -b 2 -- test
array(1) {
[0]=>
string(4) "test"
}