Maison  >  Article  >  développement back-end  >  Comment analyser les options de ligne de commande de style GNU C via getopt en PHP

Comment analyser les options de ligne de commande de style GNU C via getopt en PHP

藏色散人
藏色散人avant
2019-12-04 10:17:562258parcourir

En PHP, lorsque nous obtenons des paramètres de ligne de commande, nous pouvons les obtenir en parcourant $argv. En fait, il y a des spécifications à suivre, c'est-à-dire un analyseur de style GNU C pour les options de ligne de commande.

Par exemple, lorsque vous utilisez la commande wget pour télécharger un fichier, vous pouvez utiliser certaines des méthodes suivantes pour spécifier les options

wget http://mengkang.net/a.jpg -O b.jpg
wget http://mengkang.net/a.jpg -Ob.jpg --tries=3 -b
wget http://mengkang.net/a.jpg -Ob.jpg --tries=3 -bvd

Trions d'abord les règles des options de ligne de commande. les paramètres sont divisés en noms de paramètres courts et en noms de paramètres complets, et certains ont également des relations de mappage. Par exemple, lorsque nous utilisons wget, -O correspond à --output-document.

Résumé des spécifications d'utilisation des options

● Il existe une limitation pour les noms d'options courts, qui ne peuvent contenir qu'un seul caractère, qui ne peut contenir que 1 octet et ne peut pas dépasser 1 octet, par exemple, on ne sait pas si le dernier paramètre de la quatrième commande ci-dessus est une option ou trois options.

● Les noms d'options courts commencent par un seul trait d'union (-)

● Les options courtes peuvent être une seule - suivies de plusieurs noms d'options

● Les options longues et les options courtes peuvent avoir La relation de mappage n'a pas besoin d'être

● Le nom d'option long est multi-octets, commençant par deux tirets (--)

● Entre les options et les paramètres réels, vous pouvez directement Les connexions peuvent également être séparés par des espaces, ou vous pouvez utiliser des signes égal pour connecter

● Cependant, l'option courte utilise un signe égal pour connecter les valeurs, et le signe égal sera considéré comme faisant partie de la valeur (mais il est compatible avec ceci en php Un point)

● Les options sont divisées en aucune valeur, la valeur doit être transmise, la valeur peut être transmise (c'est-à-dire qu'elle peut être transmise ou non)

Utilisation en PHP

$longopts Puisque les paramètres longs sont multi-octets, ils doivent être des tableaux, sinon ils ne peuvent pas être séparés. Les paramètres longs suivent également les règles ::,: ci-dessus

PHP ne prend pas en charge la structure. Par rapport à la configuration des options longues de c, il est plus concis, mais il lui manque également la configuration des relations de mappage des options longues et courtes.

getopt ( string $options [, array $longopts [, int &$optind ]] ) : array
https://www.php.net/manual/zh/function.getopt.php

Dans l'exemple ci-dessus, mes paramètres courts et mes paramètres longs correspondent, mais il n'y a pas de structure de données pour représenter leur correspondance (il existe une structure d'options en C pour gérer cette correspondance), donc nous si les deux sont passés , le programme recevra les deux valeurs, et nous pourrons alors décider lequel utiliser pour le paramètre court ou le paramètre long.

$shortOpts = "O:Vv::dh";
$longOpts = ["output-document:","version","verbose::", "debug", "help"]; 
$options = getopt($shortOpts, $longOpts);
var_export($options);
php getopt.php -Oa.jpg 
array (
  'O' => 'a.jpg',
)
php getopt.php -O=a.jpg
array (
  'O' => 'a.jpg',
)
php getopt.php -O a.jpg                                 
array (
  'O' => 'a.jpg',
)
php getopt.php -O=a.jpg -dhV
array (
  'O' => 'a.jpg',
  'd' => false,
  'h' => false,
  'V' => false,
)
php getopt.php -O=a.jpg -dhV -vvv
array (
  'O' => 'a.jpg',
  'd' => false,
  'h' => false,
  'V' => false,
  'v' => 'vv',
)

Écrire comme ça est irrégulier, essayez d'éviter d'écrire comme ça.

php getopt.php -O=a.jpg -dhV -vvv --output-document b.jpg --debug
array (
  'O' => 'a.jpg',
  'd' => false,
  'h' => false,
  'V' => false,
  'v' => 'vv',
  'output-document' => 'b.jpg',
  'debug' => false,
)

Résumé les routines utilisées par les options de ligne de commande GNU C. Les commandes sont plus faciles à utiliser. Vous ne comprendrez pas pourquoi les cas d'utilisation de divers outils sous Linux sont écrits de manière "étrange".

En C, il n'est pas pris en charge pour connecter des options courtes et des valeurs avec un signe égal, mais c'est possible en PHP, alors veuillez noter.

111


Recommandé : "
Tutoriel PHP

"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer