PHP では、コマンド ライン パラメータを取得する場合、$argv をトラバースすることで取得できます。実際には、コマンド ライン オプション用の GNU C スタイル パーサーに従うべき仕様があります。
たとえば、wget コマンドを使用してファイルをダウンロードする場合、次のいくつかの方法を使用してオプションを指定できます
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
コマンド ライン オプションの規則を整理しましょう。パラメータは短いパラメータ名と完全なパラメータ名に分かれており、マッピング関係を持つものもあります。たとえば、wget を使用する場合、-O は --output-document に対応します。
サマリー オプションの使用仕様
● 短いオプション名には制限があり、文字は 1 バイトのみ、1 文字を超えることはできません。たとえば、上記の 4 番目のコマンドの最後のパラメータが 1 つのオプションであるか、3 つのオプションであるかは不明です。
# 短いオプション名は 1 つのハイフン (-) で始まります
#● 短いオプションは 1 つで、その後に複数のオプション名が続きます#● 長いオプションと短いオプションには、次の名前を付けることができますマッピング関係は存在しない可能性があります。
# 長いオプション名は 2 つのハイフン (--) で始まるマルチバイトです。
# オプションと実際のパラメータの間では、直接接続することもできます。スペースで区切ることも、等号を使用して接続することもできます
# ただし、短いオプションでは等号を使用して値を接続し、等号は値の一部とみなされます (ただし、等号は値の一部とみなされます)。 PHPではこれ) ワンポイント)
# オプションは、値なし、値を渡す必要がある、値を渡してもよい(つまり、渡しても渡してもよい)に分かれています
PHPgetopt ( string $options [, array $longopts [, int &$optind ]] ) : array
https://www.php.net/manual/zh/function.getopt.php
$longopts 長いパラメータはマルチバイトであるため、配列でなければなりません。それ以外の場合は分離できません。長いパラメータも上記::,: ルールに従います
php には構造体のサポートがありません。c の長いオプション設定と比較するとより簡潔ですが、long と short のマッピング関係の設定もありません。オプション。
$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', )
上の例では、短いパラメーターと長いパラメーターは対応していますが、それらの対応を表すデータ構造がありません (この対応を管理するための C のオプション構造があります)。そのため、両方が渡された場合、の場合、プログラムは両方の値を受け取り、短いパラメータまたは長いパラメータにどちらを使用するかを決定できます。
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, )
このような書き方は標準化されていないため、このような書き方は避けてください。
php getopt.php -O=a.jpg -dhVvvv array ( 'O' => 'a.jpg', 'd' => false, 'h' => false, 'V' => false, 'v' => 'vv', ) php getopt.php -O=a.jpg -dhvvvV array ( 'O' => 'a.jpg', 'd' => false, 'h' => false, 'v' => 'vvV', )
GNU C コマンド ライン オプションで使用されるルーチンをまとめています。コマンドはより使いやすくなっています。Linux でさまざまなツールを使用するケースがなぜ「奇妙な」方法で記述されているかについて混乱することはなくなります。
C では、短いオプションと値を等号で接続することはサポートされていませんが、PHP では可能です。PHP チュートリアル111
推奨: 「
以上がPHP で getopt を使用して GNU C スタイルのコマンドライン オプションを解析する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。