我有这个函数来解析参数:
function arguments($argv) {
$_ARG = array();
foreach ($argv as $arg) {
if (ereg('--([^=]+)=(.*)', $arg, $reg)) {
$_ARG[$reg[1]] = $reg[2];
} elseif (ereg('--([a-zA-Z0-0'-]*)', $arg, $reg)) {
$_ARG[$reg[1]] = 'true';
} elseif (ereg('-([a-zA-Z0-9])', $arg, $reg)) {
$_ARG[$reg[1]] = 'true';
} elseif (ereg('([a-zA-Z0-0'-]*)', $arg, $reg)) {
$_ARG[$reg[1]] = 'true';
}
}
return $_ARG;
}
var_dump()
之后,我得到这样的东西:
array(4) {
["xqr"]=>
string(4) "true"
["query"]=>
string(60) "Some string..."
["input"]=>
string(12) "input03.txt"
["n"]=>
string(4) "true"
}
我的问题是,我无法在解析的参数中检测到重复项。例如php name.php --query='Some string...' --input=input03.txt -n -n
或php name.php --query='Some string...' --input=input03.txt n n
。两个输入都无效,只能有一个-n
并且不能n
。请你能帮我如何处理它吗?谢谢
当我理解正确时,您需要它用于命令行中提供的参数检查。
我不建议再次编写/发明自己的函数。使用 getopt 函数。
它非常强大,您可以安全时间!