PHP中如何通过getopt解析GNU C风格命令行选项-php教程

资源魔 36 0
正在 PHP 中,当咱们正在猎取饬令行参数时,能够经过遍历$argv来猎取,其实呢是有标准可循的,也就是 GNU C-style parser for co妹妹and line options 。

比方应用饬令wget下载文件时,应用上面的一些形式来指定option均可以

wget http://mengkang.net/a.jpg -O b.jpg
wget http://mengkang.net/a.jpg -Ob.jpg --tries=3 -b
wget http://mengkang.net/a.jpg -Ob.jpg --tries=3 -bvd

咱们整顿下co妹妹and line options的规定,起首参数分为短参数名以及完好参数名,并且一些另有映照关系。比方咱们应用wget时,-O对应--output-document。

总结 options 应用标准

● 短选项名,有一个限度,只能是一个char字符,只能1字节,不克不及超越1字节,比方下面的第四个饬令的最初一个参数就没有晓得是一个选项仍是三个选项了。

● 短选项名用单个连字符(-)开端

● 短选项能够一个-前面跟多个选项名

● 长选项以及短选项能够有映照关系,也能够不

● 长选项名,则是多字节的的,两个连字符(--)开端

● 选项与实参之间,能够间接衔接,也能够用空格离隔,还能够用等号衔接

● 然而短选项用等号衔接值,等号会被视为值的一局部(然而正在 php 外面却又兼容了这一点)

● 选项分为不值,必需传值,可选传值(也就是可传可没有传)

正在 PHP 中的应用

getopt ( string $options [, array $longopts [, int &$optind ]] ) : array
https://www.php.net/manual/zh/function.getopt.php

$options 短参数字符列表,参数字符前面用:标识必需传值;参数字符前面用::标识可选传值;只有参数字符示意该参数(或许说选项)没有承受传值

$longopts 长参数因为是多字节,以是必需是数组,不然没法分隔。长参数一样遵照下面::、:规定

php外面短少构造体的撑持,相比c的长选项的设置装备摆设愈加简约,但也短少了是非选项的映照关系设置装备摆设。

$shortOpts = "O:Vv::dh";
$longOpts = ["output-document:","version","verbose::", "debug", "help"]; 
$options = getopt($shortOpts, $longOpts);
var_export($options);
php getopt.php -Oa.jpg 
array (
  'O' => 'a.jpg',
)
php getopt.php -O=a.jpg
array (
  'O' => 'a.jpg',
)
php getopt.php -O a.jpg                                 
array (
  'O' => 'a.jpg',
)
php getopt.php -O=a.jpg -dhV
array (
  'O' => 'a.jpg',
  'd' => false,
  'h' => false,
  'V' => false,
)
php getopt.php -O=a.jpg -dhV -vvv
array (
  'O' => 'a.jpg',
  'd' => false,
  'h' => false,
  'V' => false,
  'v' => 'vv',
)

下面例子中我的短参数以及长参数是对应的,然而不数据构造来示意他们的对应关系(正在C外面有option构造体来做这个对应关系的治理),以是咱们两个都传的话,顺序两个值会收到,而后咱们本人判别短参数以及长参数应用哪一个。

php getopt.php -O=a.jpg -dhV -vvv --output-document b.jpg --debug
array (
  'O' => 'a.jpg',
  'd' => false,
  'h' => false,
  'V' => false,
  'v' => 'vv',
  'output-document' => 'b.jpg',
  'debug' => false,
)

这样写是没有标准的,只管即便防止这样的写法。

php getopt.php -O=a.jpg -dhVvvv  
array (
  'O' => 'a.jpg',
  'd' => false,
  'h' => false,
  'V' => false,
  'v' => 'vv',
)
php getopt.php -O=a.jpg -dhvvvV
array (
  'O' => 'a.jpg',
  'd' => false,
  'h' => false,
  'v' => 'vvV',
)

总结了这个GNU C co妹妹and line options 应用的套路,饬令应用起来就更溜了,没有会懵逼为何linux下各类对象应用的案例写法“千奇百怪”了。

正在C外面其实不支持短选项以及值用等号衔接,正在PHP里倒是能够的,需求留意。

111

保举:《PHP教程》

以上就是PHP中若何经过getopt解析GNU C格调饬令行选项的具体内容,更多请存眷资源魔其它相干文章!

标签: php php开发教程 php开发资料 php开发自学

抱歉,评论功能暂时关闭!