# getopt

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

getopt — Obtiene las opciones de la lista de argumentos de la línea de comandos

### Descripción

getopt(string `$options`, array `$longopts` = ?): array

Analiza las opciones pasadas al script.

### Parámetros

`options`
  Cada carácter de esta cadena de texto se usará como un carácter de opción y se comparará con aquellas opciones pasadas al script que comiencen con un guión simple (`-`). Por ejemplo, el string de opciones `"x"` reconocerá la opción `-x`. Sólo se permiten a-z, A-Z y 0-9.
`longopts`
  Matriz de opciones. Cada elemento de este array se usará como texto de opciones y se compararán con aquellas opciones pasadas al script que comiencen con dos guiones (`--`). Por ejemplo, longopts tuviera un elemento con `"opt"`, reconocería la opción `--opt`.

El parámetro `options` puede contener los siguientes elementos:

- Caracteres individuales (no acepta valores)
- Caracteres seguidos por dos puntos (el parámetro exige un valor)
- Caracteres seguidos dos veces por dos puntos (valor opcional)

Los valores de opción serán el primer argumento tras el string. Si se requiere un valor, no importa si este tiene espacios en blanco delante o no. Véase la nota.

> Nota: Los valores opcionales no aceptan un `" "` (espacio) como separador.

> Nota:

> El formato de `options` y de `longopts` es casi igual. La única diferencia es que `longopts` contiene un array de opciones (donde cada elemento es la opción) mientras que `options` contiene un string (donde cada carácter es la opción).

### Valores devueltos

Esta función devolverá un array de parejas opciones / argumentos, o `false` en caso de error.

> Nota:

> El análisis de opciones finalizará cuando se encuentre alguna no-opción. Todo lo que haya a continuación será descartado.

### Historial de cambios

Versión | Descripción
--- | ---
5.3.0 | Añadido soporte para usar "=" como separador de argumento/valor.
5.3.0 | Añadido soporte para valores opcionales (especificado mediante "::").
5.3.0 | El parámetro `longopts` está disponible en todos los sistemas.
5.3.0 | Esta función ya no depende del sistema y funciona también en Windows.

### Ejemplos

Ejemplo #1 Ejemplo de getopt(): Lo básico

`<?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 Ejemplo de getopt(): Introducir opciones long

`<?php
// Script example.php
$shortopts = "";
$shortopts .= "f:"; // Valor obligatorio
$shortopts .= "v::"; // Valor opcional
$shortopts .= "abc"; // Estas opciones no aceptan valores
$longopts = array(
"required:", // Valor obligatorio
"optional::", // Valor opcional
"option", // Sin valores
"opt", // Sin valores
);
$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 Ejemplo de getopt(): Pasar varias opciones como una

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

### Ver también

- $argv