欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

php 命令行输出php 并传递参数 有大用 有大大用 有大大用

方法一

test.php代码:

<?php
print_r($argv);
?>

然后命令行:

php test.php

输出是:

Array
(
    [0] => test.php
)

再用命令行:

php test.php arg1 arg2

输出是:

Array
(
    [0] => test.php
    [1] => arg1
    [2] => arg2
)

在命令行里执行php脚本时,我们可以给它参数$argv,它是一个数组,形如

图片 

第一个元素保存的是脚本的文件名,其他是我们输入的参数,(参数是以空格分开). $argc 保存着$argv的长度. 习惯用法php php脚本  参数1   参数2   参数3  ...参数n, 此方法在命令行中使用,定时任务用,linux中用crontab来跑 

方法二 使用getopt函数()

getopt (string $options [, array$longopts ] );

参数解析:

options

  • 该字符串中的每个字符会被当做选项字符,匹配传入脚本的选项以单个连字符(-)开头。比如,一个选项字符串 "x" 识别了一个选项 -x。 只允许 a-z、A-Z 和 0-9。

  • longopts

  • 选项数组。此数组中的每个元素会被作为选项字符串,匹配了以两个连字符(--)传入到脚本的选项。例如,长选项元素 "opt" 识别了一个选项 --opt

options 可能包含了以下元素:

  • 单独的字符(不接受值)

  • 后面跟随冒号的字符(此选项需要值)

  • 后面跟随两个冒号的字符(此选项的值可选)

         选项的值是字符串后的第一个参数。它不介意值之前是否有空格。


getopt.php

<?php

  1. $options = "f:g:";  

  2.   

  3. $opts = getopt$options );  

  4.   

  5. print_r($opts);   

  6. ?>

  7. 在命令行下运行 /usr/local/php/bin/php ./getopt.php -f 123 -g 456

  8. 运行结果:

  1. Array  

  2.   

  3. (  

  4.   

  5. [f] => 123  

  6.   

  7. [g] => 456  

  8.   

  9. )  

方法三

 提示用户输入,然后获取输入的参数。有点像C语言

getopt.php

<?php

  1. fwrite(STDOUT, "Enter your name: ");  

  2.   

  3. $name = trim(fgets(STDIN));  

  4.   

  5. fwrite(STDOUT, "Hello, $name!");   

?>

stdout -- 标准输出设备 (printf("..")) 同 stdout。 

stderr -- 标准错误输出设备 两者默认向屏幕输出。 但如果用转向标准输出到磁盘文件,则可看出两者区别。

stdout输出到磁盘文件,stderr在屏幕。

在命令行下运行 /usr/local/php/bin/php ./getopt.php

运行结果

  1. Enter your name: zhang //(zhang 为用户输入)  

  2.   

  3. Hello, zhang! 

来自  https://blog.csdn.net/longxingzhiwen/article/details/54292306







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

通常PHP都做http方式请求了,可以使用GET or POST方式接收参数,有些时候需要在shell命令下把PHP当作脚本执行,比如定时任务。这就涉及到在shell命令下如何给php传参的问题,通常有三种方式传参。
一、使用$argv or $argc参数接收

复制代码代码如下:

<?php
/**
 * 使用 $argc $argv 接受参数
 */
 
echo "接收到{$argc}个参数";
print_r($argv);


执行

复制代码代码如下:

[root@DELL113 lee]# /usr/local/php/bin/php test.php
接收到1个参数Array
(
    [0] => test.php
)
[root@DELL113 lee]# /usr/local/php/bin/php test.php a b c d
接收到5个参数Array
(
    [0] => test.php
    [1] => a
    [2] => b
    [3] => c
    [4] => d
)
[root@DELL113 lee]#


二、使用getopt函数

复制代码代码如下:

<?php
/**
 * 使用 getopt函数
 */
 
$param_arr = getopt('a:b:');
print_r($param_arr);


执行

复制代码代码如下:

[root@DELL113 lee]# /usr/local/php/bin/php test.php -a 345
Array
(
    [a] => 345
)
[root@DELL113 lee]# /usr/local/php/bin/php test.php -a 345 -b 12q3
Array
(
    [a] => 345
    [b] => 12q3
)
[root@DELL113 lee]# /usr/local/php/bin/php test.php -a 345 -b 12q3 -e 3322ff
Array
(
    [a] => 345
    [b] => 12q3
)


三、提示用户输入

复制代码代码如下:

<?php
/**
 * 提示用户输入,类似Python
 */
fwrite(STDOUT,'请输入您的博客名:');
echo '您输入的信息是:'.fgets(STDIN);


执行

复制代码代码如下:

[root@DELL113 lee]# /usr/local/php/bin/php test.php 


请输入您的博客名:脚本之家 www.jb51.net
您输入的信息是:脚本之家 www.jb51.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";


执行

复制代码代码如下:

[root@DELL113 lee]# /usr/local/php/bin/php test.php 
请输入您的博客名:
抱歉,博客名不能为空,请重新输入您的博客名:脚本之家
您输入的信息是:脚本之家


来自  https://blog.csdn.net/mengzuchao/article/details/81135728

来自  https://www.cnblogs.com/wangzehuaw/p/6201588.html

普通分类: