命令行下给PHP传参的处理方式

By | April 1, 2016
  1. 使用$argv变量:

    test.php:

    命令行:

    $ php test.php abc 123
    执行结果:
    array(3) {
      [0]=>
      string(8) "test.php"
      [1]=>
      string(3) "abc"
      [2]=>
      string(3) "123"
    }

  2. 使用GETOPT函数(相关介绍):

    getopt函数接受两个参数:array getopt ( string $options [, array $longopts ] )。
    参数1是单个英文字母或数字作为选项的集合,是个字符串,该字串中的每个字符都是选项(冒号除外);
    参数2是有多个英文字母或数字作为选项的字符串组成的数组,数组元素是表达每个选项的字符串,命令行中选项前面有两个破折号。

    • 如果某个选项是必要项,则在其名称后面跟着一个冒号;
    • 如果某个选项是可选项,则在其名称后跟着两个冒号;
    • 如果某个选项不需要传值,则其后不跟冒号;
    • 命令行中输入选项和值时,单个字符的选项不在乎其值前面是否有空格,而多字符选项的值前面必须要有空格;
    • 选项的解析会终止于找到的第一个非选项,之后的任何东西都会被丢弃。因此在命令行中不需要传值的选项后面不能有值,而有值选项后面一定要有值;
    • 选项如果是可选项,则在命令行中需要在选项后面用“=”号与选项连接,若值有空格,则需要在值的两头用双引号;
    • 在命令行中选项前面用一个破折号表示单字符选项,两个破折号表示多字符选项。

    test.php代码:

    [user@dev-pc Chapter7]$ php test.php -5lkn -c=ygr -b --optional="vbibw hds" --required lvnk
    命令行运行结果:
    array(5) {
    [5]=>
    string(3) "lkn"
    ["c"]=>
    string(3) "ygr"
    ["b"]=>
    bool(false)
    ["optional"]=>
    string(9) "vbibw hds"
    ["required"]=>
    string(4) "lvnk"
    }

     

鉴于本人的相关知识储备以及能力有限,本博客的观点和描述如有错漏或是有考虑不周到的地方还请多多包涵,也欢迎指正,一起学习,共同进步。如果本文对您有帮助,而且让您觉得值得为内容付费,那么就请赞助(打赏)一下本人,这不强制。打赏支持微信支付,方法是使劲地戳一下下方的“打赏”按钮,然后得到微信收款的二维码,再用微信支付扫一下,就像买菜那样。祝好!