Heim  >  Artikel  >  Backend-Entwicklung  >  So analysieren Sie Befehlszeilenoptionen im GNU-C-Stil über getopt in PHP

So analysieren Sie Befehlszeilenoptionen im GNU-C-Stil über getopt in PHP

藏色散人
藏色散人nach vorne
2019-12-04 10:17:562302Durchsuche

Wenn wir in PHP Befehlszeilenparameter erhalten, können wir diese durch Durchlaufen von $argv abrufen. Tatsächlich gibt es Spezifikationen, die befolgt werden müssen, nämlich einen Parser im GNU-C-Stil für Befehlszeilenoptionen.

Wenn Sie beispielsweise den Befehl wget zum Herunterladen einer Datei verwenden, können Sie einige der folgenden Methoden verwenden, um Optionen anzugeben

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

Lassen Sie uns zunächst die Regeln der Befehlszeilenoptionen klären Parameter sind in kurze Parameternamen und vollständige Parameternamen unterteilt, und einige haben auch Zuordnungsbeziehungen. Wenn wir beispielsweise wget verwenden, entspricht -O dem --output-document.

Zusammenfassung der Optionsverwendungsspezifikationen

● Es gibt eine Einschränkung für kurze Optionsnamen, die nur aus einem Zeichen bestehen dürfen, das nur 1 Byte lang sein darf und die Länge nicht überschreiten darf 1 Byte. Es ist beispielsweise nicht bekannt, ob der letzte Parameter des vierten Befehls oben eine Option oder drei Optionen ist.

● Kurze Optionsnamen beginnen mit einem einzelnen Bindestrich (-)

● Kurze Optionen können eins sein – gefolgt von mehreren Optionsnamen

● Lange Optionen und kurze Optionen können haben Die Zuordnungsbeziehung muss nicht sein

● Der lange Optionsname besteht aus mehreren Bytes und beginnt mit zwei Bindestrichen (--)

● Zwischen Optionen und tatsächlichen Parametern können Sie auch direkt Verbindungen herstellen durch Leerzeichen getrennt werden, oder Sie können Gleichheitszeichen zum Verbinden verwenden

● Die kurze Option verwendet jedoch ein Gleichheitszeichen, um Werte zu verbinden, und das Gleichheitszeichen wird als Teil des Werts betrachtet (aber es ist kompatibel). damit in PHP Ein Punkt)

● Optionen sind unterteilt in keinen Wert, Wert muss übergeben werden, Wert kann übergeben werden (das heißt, er kann übergeben werden oder nicht)

Verwendung in PHP

$longopts Da lange Parameter Multibyte-Parameter sind, müssen sie Arrays sein, andernfalls können sie nicht getrennt werden. Lange Parameter folgen auch den oben genannten::,:-Regeln

PHP fehlt die Strukturunterstützung im Vergleich zur langen Optionskonfiguration von c, es ist prägnanter, aber es fehlt auch die Zuordnungsbeziehungskonfiguration von langen und kurzen Optionen.

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

Im obigen Beispiel entsprechen meine kurzen Parameter und langen Parameter, aber es gibt keine Datenstruktur, die ihre Entsprechung darstellt (es gibt eine Optionsstruktur in C, um diese Entsprechung zu verwalten), also werden wir beide übergeben , erhält das Programm beide Werte, und dann können wir entscheiden, welchen wir für den kurzen oder den langen Parameter verwenden möchten.

$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',
)

So zu schreiben ist unregelmäßig, versuche es zu vermeiden, so zu schreiben.

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

Zusammenfassung der von GNU C-Befehlszeilenoptionen verwendeten Routinen. Die Befehle sind einfacher zu verwenden und Sie werden nicht darüber verwirrt sein, warum die Fälle der Verwendung verschiedener Tools unter Linux auf „seltsame“ Weise geschrieben sind.

In C wird es nicht unterstützt, kurze Optionen und Werte mit einem Gleichheitszeichen zu verbinden, aber es ist in PHP möglich, also bitte beachten.

111


Empfohlen: „
PHP-Tutorial

Das obige ist der detaillierte Inhalt vonSo analysieren Sie Befehlszeilenoptionen im GNU-C-Stil über getopt in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:aliyun.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen