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

主頁 > 知識庫 > PHP如何獲取命令行參數

PHP如何獲取命令行參數

熱門標簽:百度商鋪地圖標注 注冊400電話申請 福州人工外呼系統哪家強 衡水外呼系統平臺 新河科技智能外呼系統怎么樣 常州地圖標注服務商 安裝電銷外呼系統 地圖標注平臺怎么給錢注冊 釘釘打卡地圖標注

使用 PHP 開發的同學多少都會接觸過 CLI 命令行。經常會有一些定時任務或者一些腳本直接使用命令行處理會更加的方便,有些時候我們會需要像網頁的 GET 、 POST 一樣為這些命令行腳本提供參數。比如在針對某些日期做統計的腳本,就需要傳遞一個日期給它,這樣我們就統計指定日期的一些數據。這類需求應該非常常見,那么,我們都是如何來接收這些命令行的參數的呢?今天,就來介紹一下這方面的內容。

$argv 獲得所有空格分隔的參數列表

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

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

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

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

getopt() 從命令行參數列表中獲取選項

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

// php 如何獲取PHP命令行參數.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 的內容并且是格式非常清晰的鍵值數組形式。有同學要問了,a 和 e 呢?還有后面的 ccc 、 ddd 呢?

首先要說明的是,ccc 和 ddd 不是標準的選項參數,也就是說,這個函數接收的內容是以 - 開頭的選項,所以 ccc 和 ddd 不會在這里輸出,并且需要注意的是,非選項參數會中斷選項參數的獲取,在 ccc 之后如果繼續添加 - 開頭的選項也是無法獲取到的,這個我們后面還會看到。而 -- 開頭的選項參數呢?我們直接看下面的長選項功能。

長選項

// php 如何獲取PHP命令行參數.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() 函數的第二個參數就是定義這種 -- 開頭的長選項的,而且需要注意的是,第一個參數是字符串類型,第二個長選項參數是數組類型的。那么我們把它們結合起來,就當然可以獲取到全部的參數信息啦!

// php 如何獲取PHP命令行參數.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,參數選項獲取沒問題了吧,細心的同學肯定又發現了一個問題,這個 getopt() 函數的參數中定義的選項名稱后面為啥都要加個冒號?這就涉及到我們的冒號規則了,請直接往下看。

冒號規則

getopt() 的前兩個參數都支持一套關于選項獲取的規則:

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

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

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

// 二
// php 如何獲取PHP命令行參數.php -f
print_r(getopt('f::'));
// Array
// (
//     [f] => 
// )
print_r(getopt('f:'));
// Array
// (
// )

// 三
// php 如何獲取PHP命令行參數.php -f 22
print_r(getopt('f::'));
// Array
// (
//     [f] => 
// )
print_r(getopt('f:'));
// Array
// (
//     [f] => 22
// )

// 四
// php 如何獲取PHP命令行參數.php -f=22
print_r(getopt('f::'));
// Array
// (
//     [f] => 22
// )
print_r(getopt('f:'));
// Array
// (
//     [f] => 22
// )

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

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

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

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

選項參數中斷

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

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

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

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

注釋已經寫得很清晰了,第三個參數會回調一個參數選項中斷位置的索引,并且這個索引是和 $argv 的索引順序位置一致的。

總結

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

測試代碼:

github.com/zhangyue050…

以上就是PHP如何獲取命令行參數的詳細內容,更多關于PHP 獲取命令行參數的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • php命令行模式代碼實例詳解
  • php web環境和命令行環境下查找php.ini的位置
  • php根據命令行參數生成配置文件詳解
  • php命令行寫shell實例詳解
  • 命令行執行php腳本中的$argv和$argc配置方法
  • 利用PHP命令行模式采集股票趨勢信息
  • 基于命令行執行帶參數的php腳本并取得參數的方法
  • php生成curl命令行的方法
  • 實例講解yii2.0在php命令行中運行的步驟
  • 如何通過Linux命令行使用和運行PHP腳本
  • PHP的命令行擴展Readline相關函數的使用

標簽:唐山 鷹潭 鶴崗 克拉瑪依 遼陽 柳州 白城 六安

巨人網絡通訊聲明:本文標題《PHP如何獲取命令行參數》,本文關鍵詞  PHP,如何,獲取,命令行,參數,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PHP如何獲取命令行參數》相關的同類信息!
  • 本頁收集關于PHP如何獲取命令行參數的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    九九视频精品免费| 久久先锋影音av| 26uuu国产日韩综合| 国产乱一区二区| 日韩一区在线免费观看| 视频一区欧美日韩| 久久久综合精品| 国产91在线看| 午夜久久久影院| 国产精品视频线看| 在线电影院国产精品| 国产精品一级片| 精品美女被调教视频大全网站| 国产精品一级片| 午夜欧美视频在线观看| 精品sm捆绑视频| 色哟哟一区二区三区| 美美哒免费高清在线观看视频一区二区| 26uuu久久天堂性欧美| 在线观看91视频| 国产伦精品一区二区三区视频青涩| 一区二区三区在线观看国产| 精品国产一区二区国模嫣然| 高清不卡一区二区| 亚洲成人一区在线| 久久久亚洲欧洲日产国码αv| 一本大道久久a久久精二百| 免费成人在线观看| 中文字幕乱码亚洲精品一区| 91麻豆精品91久久久久久清纯| www.亚洲人| 国产精品99精品久久免费| 亚洲精品欧美专区| 日韩午夜在线观看视频| 欧美四级电影网| 波波电影院一区二区三区| 国产精品夜夜爽| 精品综合免费视频观看| 午夜精品成人在线视频| 亚洲午夜一区二区三区| 久久无码av三级| 欧美一区二区日韩一区二区| 欧美日韩精品久久久| 91麻豆国产自产在线观看| 高清shemale亚洲人妖| 图片区小说区国产精品视频| 亚洲一区二区三区国产| 欧美国产精品专区| 欧美国产精品一区| 国产日韩高清在线| 国产精品无遮挡| 国产精品久久看| 最新久久zyz资源站| 亚洲欧洲日韩av| 亚洲人成亚洲人成在线观看图片 | 精品久久一区二区三区| 欧美一区二区三区思思人| 精品一区中文字幕| 欧洲一区在线电影| 麻豆精品国产91久久久久久| 成人高清免费观看| 不卡欧美aaaaa| 欧美羞羞免费网站| 免费av成人在线| 日韩亚洲欧美高清| 欧美日韩国产系列| 日本精品免费观看高清观看| 国产精品麻豆视频| 国产精品888| 91麻豆文化传媒在线观看| 色成年激情久久综合| 欧美久久高跟鞋激| 久久久久久免费毛片精品| 欧美日韩一区中文字幕| 69久久夜色精品国产69蝌蚪网| 亚洲午夜视频在线观看| 欧日韩精品视频| 亚洲一区二区在线播放相泽| 午夜私人影院久久久久| 成人黄色综合网站| 国产成人综合在线| 欧美日韩一区不卡| 韩国一区二区三区| 亚洲一区二区偷拍精品| 欧美一区二区私人影院日本| 国产精品一区二区91| 亚洲综合激情小说| 日韩一区在线播放| 国产日韩v精品一区二区| 91精品国产欧美日韩| 91久久奴性调教| 日本道色综合久久| 91蝌蚪porny九色| 成人精品免费视频| 国产乱妇无码大片在线观看| 日韩avvvv在线播放| 日韩电影免费在线| 亚洲成人av中文| 日本va欧美va精品发布| 性感美女久久精品| 日韩精品乱码免费| 一区二区三区免费在线观看| 国产精品美女久久久久久2018| 国产三级一区二区三区| 欧美精品一区二| 中文字幕精品综合| 美女视频第一区二区三区免费观看网站| 国产一区二区主播在线| 日韩午夜激情免费电影| 一区二区三区中文免费| 麻豆免费看一区二区三区| 91丨国产丨九色丨pron| 国产日韩欧美精品综合| 久久网站最新地址| 欧美精品自拍偷拍动漫精品| 欧美在线影院一区二区| 欧美男同性恋视频网站| 国产精品美女www爽爽爽| 亚洲制服欧美中文字幕中文字幕| 亚洲国产三级在线| 久久99精品久久久久久国产越南 | 久久久电影一区二区三区| 亚洲欧美日本在线| 91豆麻精品91久久久久久| 国内精品久久久久影院色| 国产精品美女久久久久久| 国产精品另类一区| 国内久久婷婷综合| 国产精品少妇自拍| 欧美色涩在线第一页| 男人的j进女人的j一区| 久久一区二区三区四区| 欧洲一区二区三区在线| 久久99久久精品| 国产精品美女久久久久久久久| 色呦呦一区二区三区| 五月激情六月综合| 国产亚洲综合性久久久影院| 91国产免费观看| 国产成人免费xxxxxxxx| 亚洲sss视频在线视频| 日韩女优毛片在线| 97久久精品人人澡人人爽| 久久机这里只有精品| 亚洲精品久久久蜜桃| 国产亚洲欧美日韩俺去了| 成av人片一区二区| 精品一区二区三区免费观看| 亚洲福利一二三区| 一区二区三国产精华液| 国产免费观看久久| 日韩欧美国产电影| 欧美专区日韩专区| 99re热这里只有精品免费视频 | 免费人成精品欧美精品| 日韩一区中文字幕| 欧美精品免费视频| 久久中文字幕电影| 国产精品二三区| 亚洲一区在线观看网站| 日本不卡一二三| 99re热这里只有精品视频| 色噜噜偷拍精品综合在线| 国内精品在线播放| 亚洲日本一区二区| 亚洲午夜激情网页| 国产精品久久久久久久蜜臀| 久久你懂得1024| 91国偷自产一区二区三区观看 | 亚洲午夜精品在线| 欧美最猛黑人xxxxx猛交| 日韩精品一卡二卡三卡四卡无卡| 国产精品日日摸夜夜摸av| 久久久国产精品午夜一区ai换脸| 91精品国产综合久久福利| 一本一道久久a久久精品综合蜜臀| 国产成人免费在线| 国产乱理伦片在线观看夜一区| 国产毛片精品视频| 国产麻豆欧美日韩一区| 久久精品国产免费看久久精品| 免费欧美在线视频| 国产自产2019最新不卡| 国产精品888| 成人午夜激情在线| 99精品在线观看视频| 色综合视频一区二区三区高清| 97久久超碰国产精品电影| 波波电影院一区二区三区| 色哦色哦哦色天天综合| 欧美精品亚洲一区二区在线播放| 在线观看免费亚洲| 欧美一级高清片| 国产亚洲美州欧州综合国| 亚洲素人一区二区| 日韩av午夜在线观看| 日韩高清不卡在线| 精品无码三级在线观看视频 | 青青草伊人久久| 国产麻豆一精品一av一免费|