PHP中通过getopt解析GNU C风格命令行选项
php  /  管理员 发布于 7年前   140
在 PHP 中,当我们在获取命令行参数时,可以通过遍历$argv来获取,其实呢是有规范可循的,也就是 GNU C-style parser for command line options 。 比如使用命令wget下载文件时,使用下面的一些方式来指定option都可以 我们整理下command line options的规则,首先参数分为短参数名和完整参数名,而且一些还有映射关系。比如我们使用wget时,-O对应--output-document。 总结 options 使用规范 在 PHP 中的使用 https://www.php.net/manual/zh/function.getopt.php $options 短参数字符列表,参数字符后面用:标识必须传值;参数字符后面用::标识可选传值;只有参数字符表示该参数(或者说选项)不接受传值 $longopts 长参数由于是多字节,所以必须是数组,否则没法分隔。长参数同样遵循上面::、:规则 php里面缺少结构体的支撑,相比c的长选项的配置更加简洁,但也缺少了长短选项的映射关系配置。 上面例子中我的短参数和长参数是对应的,但是没有数据结构来表示他们的对应关系(在C里面有option结构体来做这个对应关系的管理),所以我们两个都传的话,程序两个值会收到,然后我们自己判断短参数和长参数使用哪个。 这样写是不规范的,尽量避免这样的写法。 总结了这个GNU C command line options 使用的套路,命令使用起来就更溜了,不会懵逼为什么linux下各种工具使用的案例写法“千奇百怪”了。 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。wget http://mengkang.net/a.jpg -O b.jpgwget http://mengkang.net/a.jpg -O=b.jpgwget http://mengkang.net/a.jpg -Ob.jpg --tries=3 -bwget http://mengkang.net/a.jpg -Ob.jpg --tries=3 -bvd
getopt ( string $options [, array $longopts [, int &$optind ]] ) : array
$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.jpgarray ( 'O' => 'a.jpg',)php getopt.php -O a.jpg array ( 'O' => 'a.jpg',)php getopt.php -O=a.jpg -dhVarray ( 'O' => 'a.jpg', 'd' => false, 'h' => false, 'V' => false,)php getopt.php -O=a.jpg -dhV -vvvarray ( 'O' => 'a.jpg', 'd' => false, 'h' => false, 'V' => false, 'v' => 'vv',)
php getopt.php -O=a.jpg -dhV -vvv --output-document b.jpg --debugarray ( '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 -dhvvvVarray ( 'O' => 'a.jpg', 'd' => false, 'h' => false, 'v' => 'vvV',)
您可能感兴趣的文章:
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号