泰山神 发表于 2017-12-31 08:33:45

PHP命令行脚本接收传入参数的三种方式

  通常PHP都做http方式请求了,可以使用GET or POST方式接收参数,有些时候需要在shell命令下把PHP当作脚本执行,比如定时任务。这就涉及到在shell命令下如何给php传参的问题,通常有三种方式传参。
  一、使用$argv or $argc参数接收
复制代码代码如下:  <?php
  /**
  * 使用 $argc $argv 接受参数
  */
  echo "接收到{$argc}个参数";
  print_r($argv);
  执行
复制代码代码如下:# /usr/local/php/bin/php test.php
  接收到1个参数Array
  (
=> test.php
  )
# /usr/local/php/bin/php test.php a b c d
  接收到5个参数Array
  (
=> test.php
=> a
=> b
=> c
=> d
  )
#
  二、使用getopt函数
复制代码代码如下:  <?php
  /**
  * 使用 getopt函数
  */
  $param_arr = getopt('a:b:');
  print_r($param_arr);
  执行
复制代码代码如下:# /usr/local/php/bin/php test.php -a 345
  Array
  (
=> 345
  )
# /usr/local/php/bin/php test.php -a 345 -b 12q3
  Array
  (
=> 345
=> 12q3
  )
# /usr/local/php/bin/php test.php -a 345 -b 12q3 -e 3322ff
  Array
  (
=> 345
=> 12q3
  )
  三、提示用户输入
复制代码代码如下:  <?php
  /**
  * 提示用户输入,类似Python
  */
  fwrite(STDOUT,'请输入您的博客名:');
  echo '您输入的信息是:'.fgets(STDIN);
  执行
复制代码代码如下:# /usr/local/php/bin/php test.php
  请输入您的博客名:脚本之家 www.iyunv.net
  您输入的信息是:脚本之家 www.iyunv.net
  你也可以这么干,不让用户输入空信息
复制代码代码如下:  <?php
  /**
  * 提示用户输入,类似Python
  */
  $fs = true;
  do{
  oif($fs){
  fwrite(STDOUT,'请输入您的博客名:');
  $fs = false;
  }else{
  fwrite(STDOUT,'抱歉,博客名不能为空,请重新输入您的博客名:');
  }
  $name = trim(fgets(STDIN));
  }while(!$name);
  echo '您输入的信息是:'.$name."\r\n";
  执行
复制代码代码如下:# /usr/local/php/bin/php test.php
  请输入您的博客名:
  抱歉,博客名不能为空,请重新输入您的博客名:脚本之家
  您输入的信息是:脚本之家
页: [1]
查看完整版本: PHP命令行脚本接收传入参数的三种方式