PHP使用getopt()解析cli参数

Posted 芒果提子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP使用getopt()解析cli参数相关的知识,希望对你有一定的参考价值。

php手册的getopt()介绍如下:

/**

* Gets options from the command line argument list

* @link http://php.net/manual/en/function.getopt.php

* @param string $options Each character in this string will be used as option characters and

* matched against options passed to the script starting with a single

* hyphen (-).

* For example, an option string "x" recognizes an

* option -x.

* Only a-z, A-Z and 0-9 are allowed.

* @param array $longopts [optional] An array of options. Each element in this array will be used as option

* strings and matched against options passed to the script starting with

* two hyphens (--).

* For example, an longopts element "opt" recognizes an

* option --opt.

* Prior to PHP5.3.0 this parameter was only available on few systems

* @param int $optind If the optind parameter is present, then the index where argument parsing stopped will be written to this variable.

* @return array This function will return an array of option / argument pairs or false on

* failure.

* @since 4.3.0

* @since 5.0

*/

function getopt ($options, array $longopts = null, &$optind = null) {}

 

$options :字符串类型,其中每个字符被当作选项字符,匹配传入脚本的选项以单个连字符(-)开头。比如,一个选项字符串 "x" 识别了一个选项 -x。 只允许 a-z、A-Z 和 0-9。

字符参数后面可以:

  1. 没有冒号(比如:h):不需要提供value,有提供也不会读取,用来判断有没有设置了这个参数。
  2. 有一个冒号(比如:p:):需要提供value,没有提供value就不读取这个参数。可以按这几种方式来设置值:-p 123–p123-p=123
  3. 有两个冒号(比如:f::):value是可选的,有没有设置value都读取(没有设置时读取的value为false),value需要连在参数后面,不能用空格分隔开。可以按这几种方式来设置值:-f=123-f123

$longopts :数组类型,此数组中的每个元素会被作为选项字符串,匹配了以两个连字符(--)传入到脚本的选项。 例如,长选项元素 "opt" 识别了一个选项 --opt。

$options$longopts的格式几乎是一样的,唯一的不同之处是$longopts需要是选项的数组(每个元素为一个选项),而$options需要一个字符串(每个字符是个选项)。

以上是关于PHP使用getopt()解析cli参数的主要内容,如果未能解决你的问题,请参考以下文章

php在cli模式下取得命令行中的参数的方法-getopt命令行可传递数组-简单自定义方法取命令行参数

Unix/Linux程序设计之getopt函数浅谈

python getopt模块在参数不在选项后面时引发错误

Python 命令行工具辅助getopt使用解析!

Python 命令行工具辅助getopt使用解析!

将 wordexp 的输出提供给 getopt_long 会使我的 linux cli 应用程序崩溃