getopt

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

getoptコマンドライン引数のリストからオプションを取得する

説明

getopt(string$short_options, array$long_options = [], int&$rest_index = null): array|false

スクリプトに渡されたオプションをパースします。

パラメータ

short_options
この文字列の各文字をオプション文字として使用し、 スクリプトにハイフンひとつ (-) で始まるオプションとして渡された内容とマッチさせます。 たとえば、オプション文字列 "x"-x というオプションを認識します。 a-z、A-Z および 0-9 のみを認識します。
long_options
オプションの配列。 この配列の各要素をオプション文字列として使用し、 スクリプトにハイフンふたつ (--) で始まるオプションとして渡された内容とマッチさせます。 たとえば、longopts の要素 "opt"--opt というオプションを認識します。
rest_index
rest_index パラメータが与えられると、 引数のパースを止めた時点のインデックスがこの変数に書き込まれます。

short_options パラメータに含まれる要素には次のようなものがあります。

  • 単一の文字 (値を受け付けない)
  • 文字の後にコロンをひとつ続けたもの (値が必須であるパラメータ)
  • 文字の後にコロンをふたつ続けたもの (値がオプションであるパラメータ)
オプションの値は、文字列の後の最初の引数となります。 値が必須の場合、その前に空白があるかどうかは関係ありません。

注意: オプションの値で、" " (空白) を区切り文字として使用することはできません。

long_options パラメータに含まれる要素には次のようなものがあります。

  • 文字列 (値を受け付けない)
  • 文字列の後にコロンをひとつ続けたもの (値が必須であるパラメータ)
  • 文字列の後にコロンをふたつ続けたもの (値がオプションであるパラメータ)

注意:

short_optionslong_options の書式はほぼ同じです。唯一の違いは、 long_options はオプションの配列 (その各要素がオプションとなる) を受け取るけれども short_options は文字列 (その各文字がオプションとなる) を受け取るということです。

戻り値

この関数はオプション/引数のペアを連想配列で返します。 失敗した場合に false を返します。

注意:

オプション以外のものが見つかった時点でオプションのパースは終了し、 それ以降の内容は破棄されます。

変更履歴

バージョン説明
7.1.0rest_index パラメータが追加されました。

例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" }

参考

To Top