在从命令行使用的PHP脚本中:
据我所知,函数getopt()只允许处理‘命名’参数,例如:$args = getopt("h:m:");
将允许使用定义的参数运行脚本,如下所示:
./script.php -h24 -m60;
但是如何获得第一个(第二个,第三个…)未命名的参数,例如:
./script -h24 -m60 additional_argument_1 "argument 2";
$_SERVER['argv']
允许获取所有参数,但根据使用的(可选)命名参数的数量,获取第一个未命名参数并不简单。
如何轻松地获取additional_argument_1和可选的第二个未命名参数的值?
发布于 2014-06-25 13:33:33
我会把getopt和argv结合起来。这将给你一个好的开始:
<?php
print_r($argc);
print_r($argv);
$getopt = getopt("a::b::c::");
$optionals = array();
// Get all arguments delivered
foreach ($argv as $key1=>$value1) {
// Skip the filename
if ($key1 == 0) {
continue;
}
$match = false;
// Compare to each argument recognized by getopt
foreach ($getopt as $key2=>$value2) {
if ("-".$key2.$value2 === $value1 || "--".$key2.$value2 === $value1) {
$match = true;
break;
}
}
// If it was not recognized by getopt, it is an optional. Keep it.
if (!$match) {
$optionals[] = $value1;
}
}
print_r($optionals);
?>
您可以从以下内容开始:
php getopt.php -aarg -c optional1 optional2 optional3
它将回答:
Array
(
[0] => optional1
[1] => optional2
[2] => optional3
)
此外,还有一些非常有趣的建议:Run php script from command line with variable
但你可能想要重新考虑你的设计,有几个未命名的选项。此外,示例代码可以重构为通过回调增强PHP数组函数的用法,或者将内部循环提取到函数中。但这是一个很好的开始。
https://stackoverflow.com/questions/24400439
复制相似问题