不出现php version网页_php冷知识 - 从命令行参数列表中获取选项
生活随笔
收集整理的這篇文章主要介紹了
不出现php version网页_php冷知识 - 从命令行参数列表中获取选项
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
分享一個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 可能包含了以下元素: - 單獨的字符(不接受值) - 后面跟隨冒號的字符(此選項需要值) - 后面跟隨兩個冒號的字符(此選項的值可選)
options 和 longopts 的格式幾乎是一樣的,唯一的不同之處是 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 -dphp5.3之后還可以使用 "=" 作為 參數和值的分隔符
php 1.php -h=127.0.0.1 -p=8000 -d2. 引入長選項
<?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
總結
以上是生活随笔為你收集整理的不出现php version网页_php冷知识 - 从命令行参数列表中获取选项的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 12306 登录验证数据下载(未标定)
- 下一篇: app源码+php+l,android商