getopt

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

getoptObtiene 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