1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > PHP中如何通过getopt解析GNU C风格命令行选项

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

时间:2020-05-09 08:37:08

相关推荐

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

后端开发|php教程

PHP

后端开发-php教程

在 PHP 中,当我们在获取命令行参数时,可以通过遍历$argv来获取,其实呢是有规范可循的,也就是 GNU C-style parser for command line options 。

前台源码,vscode选中匹配,st558不能装ubuntu么,tomcat下删除,sqlite+教程下载,采样插件,前端采用VUE框架的好处,网络访问组件爬虫技术,php调用代码,建站谷歌seo,国外政府网站模板,网页防止复制代码,qq音乐模板下载lzw

比如使用命令wget下载文件时,使用下面的一些方式来指定option都可以

易语言取网页内容源码,VScode侧边栏标黄,Ubuntu环境备份,tomcat不能导入项目,爬虫哪些网页,php perl 正则,seo精准引流多少钱,区块链网站开源源码,discuz门户主题模板下载lzw

wget /a.jpg -O b.jpgwget /a.jpg -Ob.jpg --tries=3 -bwget /a.jpg -Ob.jpg --tries=3 -bvd

我们整理下command line options的规则,首先参数分为短参数名和完整参数名,而且一些还有映射关系。比如我们使用wget时,-O对应–output-document。

个人信息录入系统asp源码,ubuntu内核,查看tomcat对应数据库,爬虫13个实例,python语言转化成php,seo视频007lzw

总结 options 使用规范

● 短选项名,有一个限制,只能是一个char字符,只能1字节,不能超过1字节,比如上面的第四个命令的最后一个参数就不知道是一个选项还是三个选项了。

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

● 短选项可以一个-后面跟多个选项名

● 长选项和短选项可以有映射关系,也可以没有

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

● 选项与实参之间,可以直接连接,也可以用空格隔开,还可以用等号连接

● 但是短选项用等号连接值,等号会被视为值的一部分(但是在 php 里面却又兼容了这一点)

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

在 PHP 中的使用

getopt ( string $options [, array $longopts [, int &$optind ]] ) : array/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.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,)

上面例子中我的短参数和长参数是对应的,但是没有数据结构来表示他们的对应关系(在C里面有option结构体来做这个对应关系的管理),所以我们两个都传的话,程序两个值会收到,然后我们自己判断短参数和长参数使用哪个。

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 => .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,)

总结了这个GNU C command line options 使用的套路,命令使用起来就更溜了,不会懵逼为什么linux下各种工具使用的案例写法“千奇百怪”了。

推荐:《PHP教学》

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。