getopt

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

getoptLee las opciones pasadas en la línea de comandos

Descripción

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

getopt() lee las opciones pasadas en la línea de comandos.

Parámetros

short_options
Cada carácter en esta cadena será utilizado como caracteres opcionales y deberá coincidir con las opciones pasadas, comenzando por un guión simple (-). Por ejemplo, una cadena opcional "x" coincidirá con la opción -x. Solo se permiten a-z, A-Z y 0-9.
long_options
Un array de opciones. Cada elemento de este array será utilizado como opción y deberá coincidir con las opciones pasadas, comenzando por un guión doble (--). Por ejemplo, un elemento longopts "opt" coincidirá con la opción --opt.
rest_index
Si el parámetro rest_index está presente, entonces el índice donde se detuvo el análisis de los argumentos será escrito en esta variable.

El parámetro short_options puede contener los siguientes elementos:

  • Caracteres individuales (no aceptan valor)
  • Caracteres seguidos por un dos-puntos (el parámetro requiere un valor)
  • Caracteres seguidos por dos dos-puntos (valor opcional)
Los valores opcionales son los primeros argumentos después de la cadena. Si un valor es requerido, no importa si el valor está seguido de un espacio o no. Ver la nota.

Nota: Los valores opcionales no aceptan el espacio como separador.

El array de valores long_options puede contener:

  • String (parámetro no acepta ningún valor)
  • String seguido de un dos-puntos (parámetro requiere un valor)
  • String seguido de dos dos-puntos (valor opcional)

Nota:

El formato de los parámetros short_options y long_options es idéntico; la única diferencia es que long_options toma un array en opción (donde cada elemento es una opción) mientras que short_options toma una cadena (donde cada carácter es una opción).

Valores devueltos

Esta función devuelve un array de opciones/argumentos, o false en caso de error.

Nota:

El análisis de las opciones se detendrá cuando se encuentre la primera opción incorrecta, y todo lo que siga será ignorado.

Historial de cambios

Versión Descripción
7.1.0 Se añadió el parámetro rest_index.

Ejemplos

Ejemplo #1 Ejemplo con getopt(): los fundamentos

<?php
// Script example.php
$options = getopt("f:hp:");
var_dump($options);
?>
shell> php example.php -fvalue -h

El resultado del ejemplo sería:

array(2) {
  ["f"]=>
  string(5) "value"
  ["h"]=>
  bool(false)
}

Ejemplo #2 Segundo ejemplo con getopt(): Introducción a las opciones largas

<?php
// Script example.php
$shortopts = "";
$shortopts .= "f:"; // Valor requerido
$shortopts .= "v::"; // Valor opcional
$shortopts .= "abc"; // Estas opciones no aceptan valor

$longopts = array(
"required:", // Valor requerido
"optional::", // Valor opcional
"option", // Ningún valor
"opt", // Ningún valor
);
$options = getopt($shortopts, $longopts);
var_dump($options);
?>
shell> php example.php -f "value for f" -v -a --required value --optional="optional value" --option

El resultado del ejemplo sería:

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)
}

Ejemplo #3 Tercer ejemplo con getopt(): Pasar múltiples opciones

<?php
// Script example.php
$options = getopt("abc");
var_dump($options);
?>
shell> php example.php -aaac

El resultado del ejemplo sería:

array(2) {
  ["a"]=>
  array(3) {
    [0]=>
    bool(false)
    [1]=>
    bool(false)
    [2]=>
    bool(false)
  }
  ["c"]=>
  bool(false)
}

Ejemplo #4 Ejemplo de getopt(): Utilizando 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

El resultado del ejemplo sería:

array(1) {
  [0]=>
  string(4) "test"
}

Ver también