我正在编写一段 PHP 脚本,并需要获取一些选项(h,n 和 v)。对于我来说,最好的方法是使用 getopt
函数。此外,如果传递了意外的选项,我想显示帮助消息。但是,getopt
函数只返回期望的选项。
以下是我的脚本:
$options = getopt('hnv');
if (!empty($options)) {
foreach (array_keys($options) as $option) {
switch ($option) {
// Run script.
case 'n':
case 'v':
break;
case 'h':
// Display help with OK exit code.
self_usage();
exit(0);
default:
// Display help with ERR exit code.
self_usage('Too many params');
exit(1);
}
}
}
但是,如果我使用意料之外的选项启动我的脚本,比如-p
,它将会运行,因为选项数组为空。
php myscript.php -p
如果我将一个意外的选项与一个预期的选项一起传递,它也会运行。
php myscript.php -pn
php myscript.php -p -n
我尝试检查传递的参数数量,但这只适用于逐个传递参数(-n -p
),而不是全部放在一起传递(-np
)。
if ((count($argv) - 1) > count($options)) {
self_usage();
}
有没有一种好的方法来检查所有情况下的意外选项?
谢谢你的帮助!
php myscript.php -nh
启动我的脚本,nh
被认为是意外的,但实际上它是有意义的。我编辑了你的代码来处理这个问题。再次感谢你。 - Devatoria