日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

不出现php version网页_php冷知识 - 从命令行参数列表中获取选项

發布時間:2023/12/20 php 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 不出现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 -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

總結

以上是生活随笔為你收集整理的不出现php version网页_php冷知识 - 从命令行参数列表中获取选项的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。