久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合

站長資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

淺談PHP中獲取命令行參數(shù)的方法

在PHP CLI 命令行中,有需要像網(wǎng)頁的 GET 、 POST 一樣為命令行腳本提供參數(shù);那么如何獲取這些命令行的參數(shù)呢?下面本篇文章就來帶大家了解一下PHP中獲取命令行參數(shù)的方法,介紹一下$argv變量和getopt()函數(shù)。

淺談PHP中獲取命令行參數(shù)的方法

$argv 獲得所有空格分隔的參數(shù)列表

這個變量估計(jì)是大家用得比較多的一個接參變量了。它是 PHP 為我們準(zhǔn)備好的一個固定變量,目的就是獲取傳遞給腳本的參數(shù)數(shù)組。

print_r($argv); // php 如何獲取PHP命令行參數(shù).php --a=1 -b=2 -c=3 -d=4 --e=5 ccc ddd  // Array // ( //     [0] => 如何獲取PHP命令行參數(shù).php //     [1] => --a=1 //     [2] => -b=2 //     [3] => -c=3 //     [4] => -d=4 //     [5] => --e=5 //     [6] => ccc //     [7] => ddd // )

這個數(shù)組是以參數(shù)間隔的空格進(jìn)行分隔的。第1個元素是當(dāng)前運(yùn)行的腳本文件名,也就是說,不管有沒有參數(shù),這個變量一定會有一個 $argv[0] 表示的是當(dāng)前的腳本文件名。

在日常的開發(fā)需求中,其實(shí)使用這個變量就已經(jīng)夠用了。但是這明顯不會是我們今天的主題,大家注意到上面的代碼中我們有很多參數(shù)是 -x=xxx 的形式,這種形式的參數(shù)是不是和 Linux 的命令選項(xiàng)非常像,沒錯,這就是我們今天要重點(diǎn)介紹的:從命令行參數(shù)列表中獲取選項(xiàng)。

getopt() 從命令行參數(shù)列表中獲取選項(xiàng)

其實(shí)就是這樣一個簡單的函數(shù),我們就可以像 Linux 的命令選項(xiàng)一樣獲取指定的命令值。而且不是像 $argv 按空格進(jìn)行分隔,命令選項(xiàng)函數(shù)會將這些命令選項(xiàng)封裝成數(shù)組,組成以選項(xiàng)名為鍵,以等號后面的內(nèi)容為值的數(shù)組,更加方便我們的使用。

// php 如何獲取PHP命令行參數(shù).php --a=1 -b=2 -c=3 -d=4 --e=5 ccc ddd  print_r(getopt('a:b:c:d:e:f:')); // Array // ( //     [b] => 2 //     [c] => 3 //     [d] => 4 // )

是不是很神奇,而且非常直觀吧,我們直接就拿到了 b 、 c 、d 的內(nèi)容并且是格式非常清晰的鍵值數(shù)組形式。有同學(xué)要問了,a 和 e 呢?還有后面的 ccc 、 ddd 呢?

首先要說明的是,ccc 和 ddd 不是標(biāo)準(zhǔn)的選項(xiàng)參數(shù),也就是說,這個函數(shù)接收的內(nèi)容是以 – 開頭的選項(xiàng),所以 ccc 和 ddd 不會在這里輸出,并且需要注意的是,非選項(xiàng)參數(shù)會中斷選項(xiàng)參數(shù)的獲取,在 ccc 之后如果繼續(xù)添加 – 開頭的選項(xiàng)也是無法獲取到的,這個我們后面還會看到。而 — 開頭的選項(xiàng)參數(shù)呢?我們直接看下面的長選項(xiàng)功能。

長選項(xiàng)

// php 如何獲取PHP命令行參數(shù).php --a=1 -b=2 -c=3 -d=4 --e=5 ccc ddd  print_r(getopt('', ['a:','b:','c:','d:','e:','f:'])); // Array // ( //     [a] => 1 //     [e] => 5 // )

沒錯,getopt() 函數(shù)的第二個參數(shù)就是定義這種 — 開頭的長選項(xiàng)的,而且需要注意的是,第一個參數(shù)是字符串類型,第二個長選項(xiàng)參數(shù)是數(shù)組類型的。那么我們把它們結(jié)合起來,就當(dāng)然可以獲取到全部的參數(shù)信息啦!

// php 如何獲取PHP命令行參數(shù).php --a=1 -b=2 -c=3 -d=4 --e=5 ccc ddd  print_r(getopt('a:b:c:d:e:f:', ['a:','b:','c:','d:','e:','f:'])); // Array // ( //     [a] => 1 //     [b] => 2 //     [c] => 3 //     [d] => 4 //     [e] => 5 // )

OK,參數(shù)選項(xiàng)獲取沒問題了吧,細(xì)心的同學(xué)肯定又發(fā)現(xiàn)了一個問題,這個 getopt() 函數(shù)的參數(shù)中定義的選項(xiàng)名稱后面為啥都要加個冒號?這就涉及到我們的冒號規(guī)則了,請直接往下看。

冒號規(guī)則

getopt() 的前兩個參數(shù)都支持一套關(guān)于選項(xiàng)獲取的規(guī)則:

  • 單獨(dú)的字符(不接受值)
  • 后面跟隨冒號的字符(此選項(xiàng)需要值)
  • 后面跟隨兩個冒號的字符(此選項(xiàng)的值可選)

我們還是直接通過代碼來看一下。

// 一 // php 如何獲取PHP命令行參數(shù).php --a=1 -b=2 -c=3 -d=4 --e=5 ccc ddd  print_r(getopt('abcdef')); // Array // ( //     [b] =>  //     [c] =>  //     [d] =>  // )  // 二 // php 如何獲取PHP命令行參數(shù).php -f print_r(getopt('f::')); // Array // ( //     [f] =>  // ) print_r(getopt('f:')); // Array // ( // )  // 三 // php 如何獲取PHP命令行參數(shù).php -f 22 print_r(getopt('f::')); // Array // ( //     [f] =>  // ) print_r(getopt('f:')); // Array // ( //     [f] => 22 // )  // 四 // php 如何獲取PHP命令行參數(shù).php -f=22 print_r(getopt('f::')); // Array // ( //     [f] => 22 // ) print_r(getopt('f:')); // Array // ( //     [f] => 22 // )

這一段比較長,我們一塊一塊來看。首先是不帶冒號的 abcdef 寫法,返回的數(shù)組中都包含鍵,但沒有值,對應(yīng)上面的規(guī)則就是不接受這些參數(shù)選項(xiàng)的值,你傳了這些參數(shù)選項(xiàng)也是只有鍵名而內(nèi)容是空的。

第二段是定義了一個參數(shù),但是不給值,這時(shí),雙冒號 :: 會有鍵名,而單冒號 : 則什么都沒有。

第三段是空格形式的選項(xiàng)值,雙冒號 :: 有鍵名但沒有值,單冒號 : 鍵值正常。

第四段是等號 = 形式的選項(xiàng)值,單雙冒號都正常接收到鍵值。

選項(xiàng)參數(shù)中斷

上文中我們提到過參數(shù)中斷的問題,就是在選項(xiàng)參數(shù)之后如果有一個非選項(xiàng)參數(shù)的參數(shù)出現(xiàn),getopt() 就無法再獲取到這個非選項(xiàng)參數(shù)后面的所有內(nèi)容了。

// php 如何獲取PHP命令行參數(shù).php -f=22 aa -b=33 // 選項(xiàng)的解析會終止于找到的第一個非選項(xiàng),之后的任何東西都會被丟棄。 // Array // ( //     [f] => 22 // )

通過這個測試可以清晰的看出后面的 b 選項(xiàng)無法獲取。這時(shí),如果我們想知道選項(xiàng)參數(shù)在什么地方或者因?yàn)槟膫€參數(shù)而中斷的話,就可以使用 getopt() 函數(shù)的第三個參數(shù)了。

// php 如何獲取PHP命令行參數(shù).php -f=22 aa -b=33 $optind = null; getopt('f:b:', [], $optind); echo $optind, PHP_EOL; // 返回中斷位置的索引值,2 echo $argv[$optind], PHP_EOL; // 等同于 $argv 的索引順序,aa

注釋已經(jīng)寫得很清晰了,第三個參數(shù)會回調(diào)一個參數(shù)選項(xiàng)中斷位置的索引,并且這個索引是和 $argv 的索引順序位置一致的。

總結(jié)

說實(shí)話,在沒看文檔前真的只知道有一個 $argv 變量可以用來獲取命令行腳本的參數(shù),通過這次學(xué)習(xí)才發(fā)現(xiàn)原來還有一個這么強(qiáng)大的選項(xiàng)參數(shù)函數(shù)。學(xué)習(xí)的過程非常簡單,如何運(yùn)用到真實(shí)的項(xiàng)目中才是關(guān)鍵所在,加油學(xué)習(xí),努力實(shí)踐吧!

測試代碼: https://github.com/zhangyue0503/dev-blog/blob/master/php/202006/source/%E5%A6%82%E4%BD%95%E8%8E%B7%E5%8F%96PHP%E5%91%BD%E4%BB%A4%E8%A1%8C%E5%8F%82%E6%95%B0.php

推薦學(xué)習(xí):《PHP視頻教程》

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
日韩av电影一区| 久久精品伊人| 99免费精品| 青青青免费在线视频| 精品一区二区三区中文字幕| 欧美激情网址| 丰满少妇一区| 日韩一区电影| 不卡中文一二三区| 日韩专区视频网站| 91成人精品观看| 国产精品黄色片| 久久久国产精品入口麻豆| 欧美激情另类| 中文字幕高清在线播放| av高清一区| 亚洲欧美日韩专区| 日韩成人在线看| 国产精品白丝一区二区三区| 精品中国亚洲| 日韩精品欧美| 欧美专区在线| 欧美视频二区| 国产一区二区三区免费在线 | 麻豆亚洲精品| 日韩高清中文字幕一区| 国产精品白丝久久av网站| 精品国产亚洲日本| 99久精品视频在线观看视频| 免费人成精品欧美精品| 国产欧美69| 色偷偷偷在线视频播放| 夜夜精品视频| 国产精品网在线观看| 黄毛片在线观看| 亚洲成人免费| 日韩avvvv在线播放| 精品91福利视频| 欧美在线资源| 国产精品亚洲四区在线观看| 日本韩国欧美超级黄在线观看| 模特精品在线| 麻豆中文一区二区| 国产精品av久久久久久麻豆网| 亚洲va久久| 中文字幕在线官网| 亚洲一区二区三区中文字幕在线观看| 国产精品22p| 日韩一区二区免费看| 国产精品99久久免费| 亚洲精品成人| 麻豆一区二区三| 妖精视频成人观看www| 国产精品乱战久久久| 狠狠干成人综合网| 麻豆精品久久久| 视频一区国产视频| 成人午夜在线| 日韩中文一区二区| 久久久精品日韩| 国产亚洲电影| 黄色成人91| 电影91久久久| 日本aⅴ亚洲精品中文乱码| 久久免费黄色| 久久99久久人婷婷精品综合| 亚洲综合电影一区二区三区| 精品九九在线| 四虎精品一区二区免费| 国内亚洲精品| 麻豆精品在线播放| 蜜桃av一区| 在线精品亚洲欧美日韩国产| 欧美日韩黄网站| 红桃视频欧美| 深夜福利视频一区二区| 青草av.久久免费一区| 免费视频亚洲| 国产精品国产一区| 欧美精品国产一区| 久久国产精品亚洲77777| 天堂av在线| 蜜桃精品视频| 免费人成黄页网站在线一区二区| 久久久成人网| 91亚洲一区| 美女视频网站久久| 青青草91视频| 亚洲人成精品久久久| 亚洲女同一区| 亚洲成人二区| 国产自产自拍视频在线观看 | 亚洲日韩视频| 99国产成+人+综合+亚洲欧美| а√天堂中文在线资源8| 国产精品香蕉| 亚洲精品女人| 久久成人精品| 在线一区免费观看| 2023国产精品久久久精品双| 久久国产电影| 日韩一区自拍| 超碰成人av| 国产va免费精品观看精品视频| 亚洲欧美网站在线观看| 视频一区二区三区中文字幕| 亚洲精品小说| 一区久久精品| 亚洲免费黄色| 久久中文字幕二区| 亚洲一级影院| 久久久久久久久丰满| 精品免费av在线| 久久精品色播| 精品久久97| 国产一区二区三区亚洲| 国产一区一一区高清不卡| 免费在线观看一区| 美女国产精品久久久| 久久精品国产久精国产| 久久久国产精品入口麻豆 | 欧美日韩91| 国产探花一区在线观看| 欧美亚洲三区| 久久99精品久久久野外观看| 欧美亚洲专区| 里番精品3d一二三区| 精品视频网站| 最近高清中文在线字幕在线观看1| 国产一区二区三区四区大秀 | 亚洲欧洲一区二区天堂久久| 伊人精品在线| 美国欧美日韩国产在线播放| 亚洲日本欧美| 国产精品香蕉| 激情综合五月| 亚洲h色精品| 快she精品国产999| 视频一区在线视频| 日韩av网站在线观看| 国产福利一区二区精品秒拍| 91中文字幕精品永久在线| 私拍精品福利视频在线一区| 国产一级一区二区| 日本亚洲不卡| 精品视频91| 欧美精品一区二区久久| 蜜臀av一区二区在线免费观看| 日韩不卡一区二区| 久久中文字幕导航| 久久婷婷av| 免费的成人av| 国产伦理久久久久久妇女| 久久99偷拍| 成人自拍av| 亚洲色图网站| 精品一区二区三区中文字幕| 99久久99久久精品国产片果冰 | 激情视频一区二区三区| 蜜臀久久久99精品久久久久久| 欧美日本不卡高清| 日韩在线观看不卡| 一区二区电影在线观看| 久久亚州av| 亚洲精品一二三区区别| 日韩精品国产精品| 欧美成a人片免费观看久久五月天| av资源亚洲| 蜜桃视频第一区免费观看| 久久这里只有| 国产精品免费看| 麻豆久久一区| 99热精品在线| 免费看久久久| 亚洲激情黄色| 国产精品久久久久av蜜臀| 色吊丝一区二区| 日韩福利视频导航| 久久精品青草| 欧美精品福利| 裤袜国产欧美精品一区| 在线精品福利| 亚洲三级欧美| 一区二区国产精品| 日韩大片在线播放| 日本一区二区三区中文字幕| 日韩免费高清| 日韩午夜视频在线| 蜜桃视频在线网站| 日韩久久99| 欧美/亚洲一区| 国产极品嫩模在线观看91精品| 亚洲黄色影院| 国产va免费精品观看精品视频| 亚洲精品极品| 亚洲黄色免费av| 欧美久久精品| 噜噜噜躁狠狠躁狠狠精品视频 | 国产极品模特精品一二| 亚洲欧美久久|