Php/docs/function.getopt

提供:Dev Guides
< Php
移動先:案内検索

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 パラメータに含まれる要素には次のようなものがあります。

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

オプションの値は、文字列の後の最初の引数となります。 値が必須の場合、その前に空白があるかどうかは関係ありません。

注意:

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

注意:

optionslongopts の書式はほぼ同じです。唯一の違いは、 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"
}

参考