Получает параметры из списка аргументов командной строки

# getopt

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

getopt — Получает параметры из списка аргументов командной строки

### Описание

function 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_options` и `long_options` практически совпадают. Различие состоит только в том, что `long_options` принимает массив параметров (в котором каждый элемент является параметром) в то время, как `short_options` принимает строку (где параметром является каждый символ).

### Возвращаемые значения

Функция вернёт массив пар параметров / аргументов или `false`, если возникла ошибка.

> Замечание:

> Как только встретится первый символ, не являющийся параметром, разбор строки команды будет завершён, а оставшаяся часть строки будет проигнорирована.

### Список изменений

Версия | Описание
--- | ---
7.1.0 | Добавлен параметр `rest_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
    // Скрипт 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"
    }

### Смотрите также

- $argv

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open