本篇文章为大家展示了怎么在PHP中使用getopt解析GNU C风格命令行选项,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
专业网站建设公司,专做排名好的好网站,排在同行前面,为您带来客户和效益!创新互联为您提供品质好成都网站建设,五站合一网站设计制作,服务好的网站设计公司,负责任的成都网站制作公司!总结 options 使用规范
短参数名,有一个限制,只能是一个char字符,只能1字节,不能超过1字节,比如上面的第四个命令的最后一个参数就不知道是一个参数还是三个参数了。
短参数名用单个连字符(-)开始
短参数可以一个-后面跟多个参数名
长参数名,则是多字节的的,两个连字符(--)开始
行参与实参之间,可以直接连接,也可以用空格隔开,还可以用等号连接
参数分为没有值,必须传值,可选传值(也就是可传可不传)
在 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', )
一、phpStudy,是一个新手入门最常用的开发环境。二、WampServer,WampServer也同样的也是和phpStudy一样操作简单对小白比较友好。三、XAMPP,XAMPP(Apache+MySQL+PHP+PERL)是一个功能强大的建站集成软件包;四、MAMP,MAMP分为两种MAMP和MAMP Pro for Mac。五、宝塔面板,宝塔面板是一款服务器管理软件,支持windows和linux系统。六、UPUPW,UPUPW是目前Windows平台下最具特色的Web服务器PHP套件。
上述内容就是怎么在PHP中使用getopt解析GNU C风格命令行选项,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。