さて、PHP には組み込みのgetopt()関数があり、ユーザーが指定したプログラム オプションに関する情報を返します。ただ、私が何かを見逃していない限り、それは完全にボークです! マニュアルから:
オプションの解析は、最初の非オプションが見つかった時点で終了し、その後に続くものはすべて破棄されます。
そのため、有効で解析済みのオプションのみgetopt()
を含む配列を返します。変更されていないままの を見ると、元のコマンドライン全体をまだ見ることができますが、そのコマンドラインのどこで引数の解析を停止したかをどのように確認できますか? コマンドラインの残りの部分を他のもの (ファイル名など) として扱いたい場合は、これを知っておくことが不可欠です。$argv
getopt()
ここに例があります...
次の引数を受け入れるようにスクリプトを設定するとします。
Usage: test [OPTION]... [FILE]...
Options:
-a something
-b something
-c something
次に、次getopt()
のように呼び出します。
$args = getopt( 'abc' );
そして、次のようにスクリプトを実行した場合:
$ ./test.php -a -bccc file1 file2 file3
次の配列が返されることを期待する必要があります。
Array
(
[a] =>
[b] =>
[c] => Array
(
[0] =>
[1] =>
[2] =>
)
)
問題は次のとおりです。解析されていないオプションのない3つのFILE
引数が$argv[ 3 ]
???で始まることを一体どのように知る必要があるのでしょうか。