gpt4 book ai didi

php - 在使用 PHP 的 getopt() 之后,我如何知道保留了哪些参数?

转载 作者:IT王子 更新时间:2023-10-28 23:44:13 24 4
gpt4 key购买 nike

好的,所以 PHP 有一个内置的 getopt()函数返回有关用户提供的程序选项的信息。只是,除非我错过了什么,否则它完全是无聊的!来自手册:

The parsing of options will end at the first non-option found, anything that follows is discarded.

所以 getopt() 只返回一个带有 valid 和 parsed 选项的数组。通过查看 $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] =>
)
)

所以问题是这样的:我到底应该怎么知道三个未解析的、非选项 FILE 参数从 $argv[ 3 ] 开始? ?

最佳答案

从 PHP 7.1 开始,getopt 支持可选的 by-ref 参数 &$optind,其中包含参数解析停止的索引。这对于将标志与位置参数混合很有用。例如:

user@host:~$ php -r '$i = 0; getopt("a:b:", [], $i); print_r(array_slice($argv, $i));' -- -a 1 -b 2 hello1 hello2
Array
(
[0] => hello1
[1] => hello2
)

关于php - 在使用 PHP 的 getopt() 之后,我如何知道保留了哪些参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19159195/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com