婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > PHP中通過getopt解析GNU C風(fēng)格命令行選項(xiàng)

PHP中通過getopt解析GNU C風(fēng)格命令行選項(xiàng)

熱門標(biāo)簽:杭州語音電銷機(jī)器人 欣思維地圖標(biāo)注 天潤融通外呼系統(tǒng)好嗎 高德地圖標(biāo)注店鋪收費(fèi)嗎 江西電銷機(jī)器人收費(fèi) 高德地圖標(biāo)注位置怎么標(biāo)注 電銷機(jī)器人沒有效果怎么樣 泊頭在哪里辦理400電話 江門回?fù)芡夂粝到y(tǒng)

在 PHP 中,當(dāng)我們在獲取命令行參數(shù)時,可以通過遍歷$argv來獲取,其實(shí)呢是有規(guī)范可循的,也就是 GNU C-style parser for command line options 。

比如使用命令wget下載文件時,使用下面的一些方式來指定option都可以

wget http://mengkang.net/a.jpg -O b.jpg
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

我們整理下command line options的規(guī)則,首先參數(shù)分為短參數(shù)名和完整參數(shù)名,而且一些還有映射關(guān)系。比如我們使用wget時,-O對應(yīng)--output-document。

總結(jié) options 使用規(guī)范

  • 短參數(shù)名,有一個限制,只能是一個char字符,只能1字節(jié),不能超過1字節(jié),比如上面的第四個命令的最后一個參數(shù)就不知道是一個參數(shù)還是三個參數(shù)了。
  • 短參數(shù)名用單個連字符(-)開始
  • 短參數(shù)可以一個-后面跟多個參數(shù)名
  • 長參數(shù)名,則是多字節(jié)的的,兩個連字符(--)開始
  • 行參與實(shí)參之間,可以直接連接,也可以用空格隔開,還可以用等號連接
  • 參數(shù)分為沒有值,必須傳值,可選傳值(也就是可傳可不傳)

在 PHP 中的使用

getopt ( string $options [, array $longopts [, int $optind ]] ) : array

https://www.php.net/manual/zh/function.getopt.php

$options 短參數(shù)字符列表,參數(shù)字符后面用:標(biāo)識必須傳值;參數(shù)字符后面用::標(biāo)識可選傳值;只有參數(shù)字符表示該參數(shù)(或者說選項(xiàng))不接受傳值

$longopts 長參數(shù)由于是多字節(jié),所以必須是數(shù)組,否則沒法分隔。長參數(shù)同樣遵循上面::、:規(guī)則

php里面缺少結(jié)構(gòu)體的支撐,相比c的長選項(xiàng)的配置更加簡潔,但也缺少了長短選項(xiàng)的映射關(guān)系配置。

$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',
)

上面例子中我的短參數(shù)和長參數(shù)是對應(yīng)的,但是沒有數(shù)據(jù)結(jié)構(gòu)來表示他們的對應(yīng)關(guān)系(在C里面有option結(jié)構(gòu)體來做這個對應(yīng)關(guān)系的管理),所以我們兩個都傳的話,程序兩個值會收到,然后我們自己判斷短參數(shù)和長參數(shù)使用哪個。

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

這樣寫是不規(guī)范的,盡量避免這樣的寫法。

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',
)

總結(jié)了這個GNU C command line options 使用的套路,命令使用起來就更溜了,不會懵逼為什么linux下各種工具使用的案例寫法“千奇百怪”了。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • ThinkPHP3.1.2 使用cli命令行模式運(yùn)行的方法
  • php web環(huán)境和命令行環(huán)境下查找php.ini的位置
  • php根據(jù)命令行參數(shù)生成配置文件詳解
  • php命令行寫shell實(shí)例詳解
  • php命令行模式代碼實(shí)例詳解

標(biāo)簽:大同 駐馬店 石嘴山 雙鴨山 內(nèi)江 深圳 江門

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PHP中通過getopt解析GNU C風(fēng)格命令行選項(xiàng)》,本文關(guān)鍵詞  PHP,中,通過,getopt,解析,GNU,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PHP中通過getopt解析GNU C風(fēng)格命令行選項(xiàng)》相關(guān)的同類信息!
  • 本頁收集關(guān)于PHP中通過getopt解析GNU C風(fēng)格命令行選項(xiàng)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 黎川县| 芜湖县| 剑川县| 南丰县| 青川县| 虹口区| 惠来县| 嵩明县| 伊宁市| 荃湾区| 阿拉尔市| 吉林市| 滕州市| 昌平区| 峡江县| 河东区| 阜宁县| 驻马店市| 陵水| 汉中市| 军事| 繁昌县| 渝北区| 奎屯市| 乌鲁木齐县| 长丰县| 黄石市| 米脂县| 恭城| 赤水市| 都兰县| 德江县| 醴陵市| 荥经县| 河源市| 红原县| 祁连县| 肥东县| 宜丰县| 兴山县| 长葛市|