zzengineer / getoptc
C语言风格的getopt用于php
Requires
- php: >=5.3.0
This package is not auto-updated.
Last update: 2024-10-02 09:49:06 UTC
README
C语言风格的getopt用于php
名称
getoptc -- 从命令行参数列表中获取选项字符
概要
function getoptc($args, $optstring, &$optind, &$optarg, $opterr = true)
描述
getoptc() 函数解析给定的命令行参数列表,并返回下一个已知选项字符。如果选项字符已在接受的选项字符字符串 $optstring
中指定,则该选项字符是 已知 的。
选项字符串可以包含以下元素:单个字符,以及后跟冒号以指示选项参数将要跟随的字符。如果单个字符后跟两个冒号,则选项参数是可选的;$optarg
被设置为当前单词的其余部分。对于 getoptc() 来说,如果后面的参数有前导空白,这并不重要。
从 getoptc() 返回时,$optarg
被设置为预期的参数或 NULL
。 $optind
包含下一次调用 getoptc() 的下一个列表参数的索引。
$optind
变量初始化为 1。在调用 getoptc() 之前,可以将 $optind
变量设置为其他值,以便跳过更多或更少的列表条目。
$opterr
变量初始化为 true,可以禁用以抑制错误消息。见返回值
返回值
getoptc() 函数返回 $optstring
中的下一个已知选项字符。如果 getopt() 遇到不在 $optstring
中的字符或检测到缺失的选项参数,则返回 ?
(问号)。如果 $optstring
有前导 :
,则缺失的选项参数会导致返回 :
而不是 ?
。在任何情况下,变量 $optarg
都会设置为导致错误的字符。当参数列表耗尽时,getoptc() 返回 false
。 $optind
将包含第一个非选项参数的索引。每次后续调用 getoptc() 都将返回 false
并保持 $optind
和 $optarg
不变。
示例
while (($c = getoptc($argv,'ab:c::', $optind, $optarg)) !== false) switch ($c) { case 'a': $flag_a=true; break; case 'b': $arg_b=$optarg; break; case 'c': $flag_c=true; $arg_c=$optarg; break; case '?': case ':': default : usage(); exit(1); } for ($i = $optind; $i < count($argv); $i++) print "programm argument ". $argv[$i]. PHP_EOL;
诊断
如果 getoptc() 函数遇到不在字符串 $optstring
中的字符或检测到缺失的选项参数,它将错误消息写入 STDERR
。将 $opterr
设置为 false
将禁用这些错误消息。
允许选项参数以 -
开头;这是合理的,但减少了可能进行的错误检查的数量。