溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

怎么在PHP中使用getopt解析GNU C風(fēng)格命令行選項

發(fā)布時間:2021-05-26 10:10:40 來源:億速云 閱讀:122 作者:Leah 欄目:開發(fā)技術(shù)

本篇文章為大家展示了怎么在PHP中使用getopt解析GNU C風(fēng)格命令行選項,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

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

  • 短參數(shù)名,有一個限制,只能是一個char字符,只能1字節(jié),不能超過1字節(jié),比如上面的第四個命令的最后一個參數(shù)就不知道是一個參數(shù)還是三個參數(shù)了。

  • 短參數(shù)名用單個連字符(-)開始

  • 短參數(shù)可以一個-后面跟多個參數(shù)名

  • 長參數(shù)名,則是多字節(jié)的的,兩個連字符(--)開始

  • 行參與實參之間,可以直接連接,也可以用空格隔開,還可以用等號連接

  • 參數(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ù)(或者說選項)不接受傳值

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

php里面缺少結(jié)構(gòu)體的支撐,相比c的長選項的配置更加簡潔,但也缺少了長短選項的映射關(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',
)

PHP開發(fā)環(huán)境搭建工具有哪些

一、phpStudy,是一個新手入門最常用的開發(fā)環(huán)境。二、WampServer,WampServer也同樣的也是和phpStudy一樣操作簡單對小白比較友好。三、XAMPP,XAMPP(Apache+MySQL+PHP+PERL)是一個功能強(qiáng)大的建站集成軟件包;四、MAMP,MAMP分為兩種MAMP和MAMP Pro for Mac。五、寶塔面板,寶塔面板是一款服務(wù)器管理軟件,支持windows和linux系統(tǒng)。六、UPUPW,UPUPW是目前Windows平臺下最具特色的Web服務(wù)器PHP套件。

上述內(nèi)容就是怎么在PHP中使用getopt解析GNU C風(fēng)格命令行選項,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI