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


Posted in PHP onAugust 20, 2014

通常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

请输入您的博客名:三水点靠木 3water.com
您输入的信息是:三水点靠木 3water.com
你也可以这么干,不让用户输入空信息
<?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 

请输入您的博客名:

抱歉,博客名不能为空,请重新输入您的博客名:三水点靠木

您输入的信息是:三水点靠木
PHP 相关文章推荐
使用无限生命期Session的方法
Oct 09 PHP
phpmyadmin安装时提示:Warning: require_once(./libraries/common.inc.php)错误解决办法
Aug 18 PHP
php中实现简单的ACL 完结篇
Sep 07 PHP
基于php无限分类的深入理解
Jun 02 PHP
深入理解curl类,可用于模拟get,post和curl下载
Jun 08 PHP
PHP中把数据库查询结果输出为json格式简单实例
Apr 09 PHP
php实现html标签闭合检测与修复方法
Jul 09 PHP
php采集神器cURL使用方法详解
Feb 19 PHP
PHP计算日期相差天数实例分析
Feb 23 PHP
PHP中SERIALIZE和JSON的序列化与反序列化操作区别分析
Oct 11 PHP
Zend Framework上传文件重命名的实现方法
Nov 25 PHP
PHP读取Excel类文件
May 15 PHP
PHP中IP地址与整型数字互相转换详解
Aug 20 #PHP
PHP函数http_build_query使用详解
Aug 20 #PHP
PHP函数in_array()使用详解
Aug 20 #PHP
PHP中使用json数据格式定义字面量对象的方法
Aug 20 #PHP
PHP采用自定义函数实现遍历目录下所有文件的方法
Aug 19 #PHP
浅谈php函数serialize()与unserialize()的使用方法
Aug 19 #PHP
PHP将回调函数作用到给定数组单元的方法
Aug 19 #PHP
You might like
解析php入库和出库
2013/06/25 PHP
AJAX PHP无刷新form表单提交的简单实现(推荐)
2016/09/09 PHP
PHP针对中英文混合字符串长度判断及截取方法示例
2017/03/31 PHP
php 二维数组快速排序算法的实现代码
2017/10/17 PHP
关于php支持的协议与封装协议总结(推荐)
2017/11/17 PHP
用Laravel Sms实现laravel短信验证码的发送的实现
2018/11/29 PHP
use jscript List Installed Software
2007/06/11 Javascript
用jscript启动sqlserver
2007/06/21 Javascript
js 获取Listbox选择的值的代码
2010/04/15 Javascript
鼠标经过显示二级菜单js特效
2013/08/13 Javascript
js实现iframe跨页面调用函数的方法
2014/12/13 Javascript
正则表达式优化JSON字符串的技巧
2015/12/24 Javascript
JavaScript实现iframe自动高度调整和不同主域名跨域
2016/02/27 Javascript
javascript移动开发中touch触摸事件详解
2016/03/18 Javascript
浅谈MVC+EF easyui dataGrid 动态加载分页表格
2016/11/10 Javascript
JS异步处理的进化史深入讲解
2019/08/25 Javascript
用JS实现选项卡
2020/03/23 Javascript
vue实现员工信息录入功能
2020/06/11 Javascript
Vue切换div显示隐藏,多选,单选代码解析
2020/07/14 Javascript
JS变量提升及函数提升实例解析
2020/09/03 Javascript
JavaScript实现页面高亮操作提示和蒙板
2021/01/04 Javascript
[02:57]2014DOTA2国际邀请赛-观众采访
2014/07/19 DOTA
[02:11]2016国际邀请赛中国区预选赛全程回顾
2016/07/01 DOTA
python logging 日志轮转文件不删除问题的解决方法
2016/08/02 Python
Python标准库06之子进程 (subprocess包) 详解
2016/12/07 Python
PyQt 线程类 QThread使用详解
2017/07/16 Python
TensorFlow实现模型评估
2018/09/07 Python
html5是什么_动力节点Java学院整理
2017/07/07 HTML / CSS
Zavvi美国:英国娱乐之家
2017/03/19 全球购物
C#面试常见问题
2013/02/25 面试题
linux面试题参考答案(2)
2015/12/06 面试题
材料加工硕士生求职信
2013/10/10 职场文书
专业销售业务员求职信
2013/11/18 职场文书
酒店总经理岗位职责
2015/04/01 职场文书
2015年幼师工作总结
2015/04/28 职场文书
运动会广播稿200字
2015/08/19 职场文书