不出現php version網頁_php冷知識 - 從命令行參數列表中獲取選項

01d2b93c948c96fd57a077e8b69e67bd.png

分享一個php的冷知識 - ,從命令行參數列表中獲取選項

用到的函數是getopt

說明

函數簽名是這樣的

getopt ( string $options [, array $longopts [, int &$optind ]] ) : array|bool false

解析傳入腳本的選項,成功返回數組,解析失敗返回false

參數

  • options 該字符串中的每個字符會被當做選項字符,匹配傳入腳本的選項以單個連字符(-)開頭。 比如,一個選項字符串 "x" 識別了一個選項 -x。 只允許 a-z、A-Z 和 0-9。
  • longopts 選項數組。此數組中的每個元素會被作為選項字符串,匹配了以兩個連字符(--)傳入到腳本的選項。 例如,長選項元素 "opt" 識別了一個選項 --opt。
  • optind 如果存在optind參數,則參數解析停止的索引將被寫入此變量。

參數值

options 可能包含了以下元素: - 單獨的字符(不接受值) - 后面跟隨冒號的字符(此選項需要值) - 后面跟隨兩個冒號的字符(此選項的值可選)

optionslongopts 的格式幾乎是一樣的,唯一的不同之處是 longopts 需要是選項的數組(每個元素為一個選項),而 options 需要一個字符串(每個字符是個選項)。

例子

說了這么多,我們舉例說明吧

1. 基本用法

<?php
// Script 1.php
$options = getopt("h:p:d");
var_dump($options);
?>

命令行下測試看看

php 1.php -h 127.0.0.1 -p 8000 -d

以上例程會輸出:

array(3) {["h"]=>string(9) "127.0.0.1"["p"]=>string(4) "8000"["d"]=>bool(false)
}

選項參數也可以中間不要空格

php 1.php -h 127.0.0.1 -p 8000 -d

php5.3之后還可以使用 "=" 作為 參數和值的分隔符

php 1.php -h=127.0.0.1 -p=8000 -d

2. 引入長選項

<?php
// Script 2.php
$shortopts  = "";       // 短選項 用字母字符串
$shortopts .= "h:";     // 必選選項 字母后面一個冒號
$shortopts .= "p::";    // 可選選項 字母后面兩個冒號
$shortopts .= "vd";     // 無需值的選項 字母后面沒有冒號$longopts  = array(     // 長選項 用單詞的數組"host:",            // 必選選項 單詞后面一個冒號"port::",           // 可選選項 單詞后面兩個冒號"version",          // 無需值的選項 單詞后面沒有冒號"debug",            // 無需值的選項 單詞后面沒有冒號
);$options = getopt($shortopts, $longopts);
var_dump($options);
?>

運行測試:

php 2.php -h127.0.0.1 -p8000 -d --host=127.0.0.1 --port=8000 --version --debug

輸出:

array(7) {["h"]=>string(9) "127.0.0.1"["p"]=>string(4) "8000"["d"]=>bool(false)["host"]=>string(9) "127.0.0.1"["port"]=>string(4) "8000"["version"]=>bool(false)["debug"]=>bool(false)
}

3. 同一選項可以傳遞多次

運行測試:

php 2.php -d -d --version --debug --port=123 --port=234

輸出:

array(4) {["d"]=>array(2) {     // 多個選項參數值以數組呈現[0]=>bool(false)[1]=>bool(false)}["version"]=>bool(false)["debug"]=>bool(false)["port"]=>array(2) {[0]=>string(3) "123"[1]=>string(3) "234"}
}

4. 使用 optind

// Script 3.php
$optind = null;
$opts = getopt('a:b:', [], $optind);
var_dump($argv);
var_dump($optind);
$pos_args = array_slice($argv, $optind);  // 從數組中取出一段
var_dump($pos_args);

運行測試:

php 3.php -a 1 -b 2 -- test

輸出:

array(7) {[0]=>string(7) "cli.php"[1]=>string(2) "-a"[2]=>string(1) "1"[3]=>string(2) "-b"[4]=>string(1) "2"[5]=>string(2) "--"[6]=>string(4) "test"
}
int(6)      // $optind = 6
array(1) {[0]=>string(4) "test"
}

至此以后就可以寫出漂亮優雅的cli程序了

參考

  • https://www.php.net/manual/zh/function.getopt.php
作者博客鏈接?metmoon.com

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/455656.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/455656.shtml
英文地址,請注明出處:http://en.pswp.cn/news/455656.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【機器學習】opencv-攝像頭中的人臉采集

本次在視頻識別的程度上增添了攝像頭實時識別&#xff0c; 區別在于&#xff1a; # v cv2.VideoCapture(./dzd2.mp4) v cv2.VideoCapture(0) import numpy as npimport cv2face_detector cv2.CascadeClassifier(./haarcascade_frontalface_alt2.xml) # v cv2.VideoCapt…

[計算機視覺][神經網絡與深度學習]Faster R-CNN配置及其訓練教程2

faster-rcnn分為matlab版本和python版本,首先記錄弄python版本的環境搭建過程.matlab版本見另一篇&#xff1a;faster-rcnn(testing): ubuntu14.04caffecuda7.5cudnn5.1.3opencv3.0matlabR2014a環境搭建記錄 首先,進入官方github網站:https://github.com/rbgirshick/py-faster-…

modbus從站模擬軟件_作為工控電氣人,你知道我們必備的軟件有哪些嗎?

作為工控電氣人&#xff0c;你知道我們必備的軟件有哪些嗎&#xff1f;今天我就來給大家介紹一下&#xff0c;工控電氣人常用的幾款軟件&#xff0c;有了它們&#xff0c;我們的工作學習將會更易上手&#xff0c;效率翻倍。以下介紹主要是分為電工常用軟件&#xff0c;PLC編程軟…

錯誤檢測dP-bitstream-ei_flag runRestrictRef

JM86模型&#xff0c;對于錯誤檢測&#xff0c;dP->bitstream->ei_flag在什么情況下置1&#xff1f;還是無錯的時候dP->bitstream->ei_flag0&#xff0c;有錯時dP->bitstream->ei_flag等于一個較大的無效值&#xff1f; 看下所有給 dP->bitstream->ei_…

【數據分析】豆瓣電影Top250爬取的數據的可視化分析

豆瓣Top250網址 將之前爬取到的豆瓣電影進行簡單的可視化&#xff1a; 數據列表保存為CSV格式&#xff0c;如圖 導入數據 做好準備 #!-*- coding:utf-8 -*- import pandas as pd import numpy as np import matplotlib.pylab as plt import re from numpy import rank from bu…

sqlmap的二次開發

1、sqlmapapi的幫助信息。 -s 啟動sqlmap作為服務器 -h 指定sqlmap作為服務器的IP地址&#xff0c;默認127.0.0.1 -p 指定sqlmap服務器的端口&#xff0c;默認端口為8775 2、啟動服務 瀏覽器訪問&#xff1a; 3、api介紹&#xff1a;sqlmap項目下的api.py文件含有所有的api adm…

Django創建第一個應用

Django創建第一個應用 1,創建應用 Django自帶一個實用程序&#xff0c;可以自動生成應用程序的基本目錄結構&#xff0c;因此您可以專注于編寫代碼而不是創建目錄。 要創建您的應用程序&#xff0c;請確保您與目錄位于同一目錄&#xff0c;manage.py 并鍵入以下命令&#xff1…

docker nginx配置_docker隨手筆記第十二節 jenkins+docker+nginx+純靜態頁面配置

docker隨手筆記第一節 docker概念及安裝docker隨手筆記第二節 docker常用命令解析docker隨手筆記第三節 docker構建java鏡像docker隨手筆記第四節 docker安裝mysql5.7docker隨手筆記第五節 docker安裝redis4.0docker隨手筆記第六節 docker安裝jenkinsdocker隨手筆記第七節 jenk…

【機器學習】邏輯斯蒂回歸原理

邏輯斯蒂函數 引入&#xff1a; 在線性感知器算法中&#xff0c;我們使用了一個f(x)x函數&#xff0c;作為激勵函數&#xff0c;而在邏輯斯蒂回歸中&#xff0c;我們將會采用sigmoid函數作為激勵函數&#xff0c;所以它被稱為sigmoid回歸也叫對數幾率回歸&#xff08;logistic …

。。。。。etc 時域錯誤隱藏個人理解

三個文件名以 erc 開頭的文件就是 EC 相關的文件。EC 的入口在 exit_picture 函數中&#xff0c;從 ercStartSegment 開始到 ercConcealInterFrame 結束。你自己做一個丟包之后的碼流&#xff0c;把程序跑起來跟蹤一下 EC 過程&#xff0c;慢慢分析代碼。 錯誤隱藏過程在整個幀…

手機影音第十一天,顯示視頻緩沖,顯示卡頓時的網速,播放系統視頻時調用播放器的選擇...

代碼已經托管到碼云&#xff0c;有興趣的小伙伴可以下載看看https://git.oschina.net/joy_yuan/MobilePlayer一、設置視頻緩沖進度顯示視頻播放進度的效果圖如下&#xff1a;灰色的是緩沖的進度。原理&#xff1a;只有播放網絡視頻時&#xff0c;才有緩沖這個說法&#xff0c;所…

Django之創建應用以及配置路由

Django之創建應用以及配置路由 配置所有IP都可以訪問你的項目 1.進入manage.py同級的my_web里面的settings.py的文件 2.在文件的第28行把ALLOWED_HOSTS []改成ALLOWED_HOSTS [*] 注意&#xff1a;*代表的是所有IP都可以訪問 創建一個app應用 在終端中&#xff0c;結束項目…

python中opencv是什么_python-opencv的用法

#!/usr/bin/env python # -*- coding:utf-8 -*- # author:love_cat import cv2 # 接收兩個參數&#xff0c;一個是文件名&#xff0c;一個值&#xff0c;如果值為1&#xff0c;接收的是彩色圖片&#xff0c;如果值為零&#xff0c;接受的是灰度圖片。會有一個返回值&#xff0c…

openjudge 14:求10000以內n的階乘

14:求10000以內n的階乘 總時間限制:5000ms內存限制:655360kB描述求10000以內n的階乘。 輸入只有一行輸入&#xff0c;整數n&#xff08;0<n<10000&#xff09;。輸出一行&#xff0c;即n!的值。樣例輸入100 樣例輸出933262154439441526816992388562667004907159682643816…

【Tensorflow】卷積神經網絡實現藝術風格化通過Vgg16實現

卷積神經網絡實現藝術風格化 基于卷積神經網絡實現圖片風格的遷移&#xff0c;可以用于大學生畢業設計基于python&#xff0c;深度學習&#xff0c;tensorflow卷積神經網絡&#xff0c; 通過Vgg16實現&#xff0c;一幅圖片內容特征的基礎上添加另一幅圖片的風格特征從而生成一幅…

抗誤碼技術

抗誤碼技術&#xff1a; 視頻傳輸過程中的錯誤是不可避免的&#xff0c;抗誤碼技術歷來都足視頻領域一個研究的熱點。H264標準繼承r以前視頻編碼標準中某些優秀的錯誤恢復工具&#xff0c;同時也改進和創新了多種錯誤恢復丁具。這些錯誤恢復的工具主要有&#xff1a;參數集、數…

Linux統計文件行數、字數、字節數

2019獨角獸企業重金招聘Python工程師標準>>> 語法&#xff1a;wc [選項] 文件 說明&#xff1a;該命令統計給定文件中的字節數、字數、行數。如果沒有給出文件名&#xff0c;則從標準輸入讀取。wc同時也給出所有指定文件的總統計數。字是由空格字符區分開的最大字符…

tkinter中鼠標與鍵盤事件

tkinter中鼠標與鍵盤事件&#xff08;十五&#xff09; 本文轉自Tynam Yang的博客園 import tkinterwuya tkinter.Tk() wuya.title("wuya") wuya.geometry("300x2001020")bt tkinter.Button(wuya,text鼠標進入打印) bt.pack()def func(event):print(鼠…

html解析のBeautifulSoup

引子&#xff1a; 使用python爬蟲對爬取網頁進行解析的時候&#xff0c;如果使用正則表達式&#xff0c;有很多局限&#xff0c;比如標簽中出現換行&#xff0c;或者標簽的格式不規范&#xff0c;都有可能出現取不到數據&#xff0c;BeautifulSoup作為一個專門處理html格式的py…

【Tensorflow】人臉128個關鍵點識別基于卷積神經網絡實現

引言&#xff1a; 卷積神經網絡 卷積神經網絡最早是為了解決圖像識別的問題,現在也用在時間序列數據和文本數據處理當中,卷積神經網絡對于數據特征的提取不用額外進行,在對網絡的訓練的過程當中,網絡會自動提取主要的特征.卷積神經網絡直接用原始圖像的全部像素作為輸入,但是內…