在命令行下运行PHP脚本[带参数]的方法


Posted in PHP onJanuary 22, 2010

创建一个简单的文本文件,其中包含有以下PHP代码,并把它保存为hello.php:

<?php 
echo "Hello from the CLI"; 
?>

现在,试着在命令行提示符下运行这个程序,方法是调用CLI可执行文件并提供脚本的文件名:
#php phphello.php
输出Hello from the CLI

使用标准的输入和输出
你可以在自己的PHP脚本里使用这三个常量,以接受用户的输入,或者显示处理和计算的结果。要更好地理解这一点,可以看看下面的脚本(

列表A):

列表A

<?php 
// ask for input 
fwrite(STDOUT, "Enter your name: "); // get input 
$name = trim(fgets(STDIN)); 
// write input back 
fwrite(STDOUT, "Hello, $name!"); 
?>

Look what happens when you run it:
shell> php hello.php
Enter your name: Joe
Hello, Joe!

在这个脚本里,fwrite()函数首先会向标准的输出设备写一条消息,询问用户的姓名。然后它会把从标准输入设备获得的用户输入信息读

取到一个PHP变量里,并它把合并成为一个字符串。然后就用fwrite()把这个字符串打印输出到标准的输出设备上。

-----------------使用命令行自变量
在命令行里输入程序参数来更改其运行方式是很常见的做法。你也可以对CLI程序这样做。PHP CLI带有两个特殊的变量,专门用来达到这个

目的:一个是$argv变量,它通过命令行把传递给PHP脚本的参数保存为单独的数组元素;另一个是$argc变量,它用来保存$argv数组里元素的

个数。

用PHP脚本编写一段读取$argv并处理它所含参数的代码是很简单的。试试列表B里的示例脚本,看看它是如何工作的:

列表B

<?php 
print_r($argv); 
?>

Run this script by passing it some arbitrary values, and check the output:

shell> php phptest.php chocolate 276 "killer tie, dude!"
Array
( [0] => test.php
[1] => chocolate
[2] => 276
[3] => killer tie, dude!
)

正如你可以从输出的结果看到的,传递给test.php的值会自动地作为数组元素出现在$argv里。要注意的是,$argvis的第一个自变量总是

脚本自己的名称。

下面是一个更加复杂的例子(列表C):

列表C

代码

<?php 
// check for all required arguments 
// first argument is always name of script! 
if ($argc != 4) { 
die("Usage: book.php <check-in-date> <num-nights> <room-type> "); 
} // remove first argument 
array_shift($argv); 
// get and use remaining arguments 
$checkin = $argv[0]; 
$nights = $argv[1]; 
$type = $argv[2]; 
echo "You have requested a $type room for $nights nights, checking in on $checkin. Thank you for your order! "; 
?>

下面是其用法的示例:

shell> php phpbook.php 21/05/2005 7 single
You have requested a single room for 7 nights, checking in on 21/05/2005. Thank you for your order!

在这里,脚本首先会检查$argc,以确保自变量的数量符合要求。它然后会从$argv里提取出每一个自变量,把它们打印输出到标准的输出

PHP 相关文章推荐
php 字符串函数收集
Mar 29 PHP
php下载文件的代码示例
Jun 29 PHP
PIGCMS 如何关闭聊天机器人
Feb 12 PHP
PHP使用PDO连接ACCESS数据库
Mar 05 PHP
PHP使用pear自带的mail类库发邮件的方法
Jul 08 PHP
学习php设计模式 php实现建造者模式
Dec 07 PHP
PHP数组去重比较快的实现方式
Jan 19 PHP
ThinkPHP的常用配置选项汇总
Mar 24 PHP
PHP面向对象程序设计模拟一般面向对象语言中的方法重载(overload)示例
Jun 13 PHP
PHP进阶学习之Geo的地图定位算法详解
Jun 19 PHP
分享8个Laravel模型时间戳使用技巧小结
Feb 12 PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
Feb 21 PHP
php获取url字符串截取路径的文件名和扩展名的函数
Jan 22 #PHP
PHP has encountered an Access Violation 错误的解决方法
Jan 17 #PHP
获取远程文件大小的php函数
Jan 11 #PHP
PHP 编程安全性小结
Jan 08 #PHP
基于Windows下Apache PHP5.3.1安装教程
Jan 08 #PHP
PHP5.3.1 不再支持ISAPI
Jan 08 #PHP
PhpMyAdmin中无法导入sql文件的解决办法
Jan 08 #PHP
You might like
用缓存实现静态页面的测试
2006/12/06 PHP
php 分页函数multi() discuz
2009/06/21 PHP
php each 返回数组中当前的键值对并将数组指针向前移动一步实例
2016/11/22 PHP
php实现xml转换数组的方法示例
2017/02/03 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
2017/08/29 PHP
php微信开发之关键词回复功能
2018/06/13 PHP
用js怎么把&amp;字符换成&quot;&amp;amp:&quot;
2006/10/19 Javascript
JavaScript获取GridView中用户点击控件的行号,列号
2009/04/14 Javascript
javascript JSON操作入门实例
2010/04/16 Javascript
jQuery图片播放8款精美插件分享
2013/02/17 Javascript
JavaScript对象和字串之间的转换实例探讨
2013/04/21 Javascript
jQuery 三击事件实现代码
2013/09/11 Javascript
Javascript 数组排序详解
2014/10/22 Javascript
浅谈JavaScript的内置对象和浏览器对象
2016/06/03 Javascript
微信小程序 slider 详解及实例代码
2017/01/10 Javascript
jQuery与vue实现拖动验证码功能
2018/01/30 jQuery
基于nodejs res.end和res.send的区别
2018/05/14 NodeJs
小程序实现左右来回滚动字幕效果
2018/12/28 Javascript
layui table 表格上添加日期控件的两种方法
2019/09/28 Javascript
[01:00:26]Ti4主赛事胜者组第一天 EG vs NEWBEE 1
2014/07/19 DOTA
Python实现简单的四则运算计算器
2016/11/02 Python
Python3 中文文件读写方法
2018/01/23 Python
详解如何将python3.6软件的py文件打包成exe程序
2018/10/09 Python
python实现小球弹跳效果
2019/05/10 Python
线程安全及Python中的GIL原理分析
2019/10/29 Python
基于Python绘制个人足迹地图
2020/06/01 Python
浅谈Python 参数与变量
2020/06/20 Python
使用python修改文件并立即写回到原始位置操作(inplace读写)
2020/06/28 Python
python Xpath语法的使用
2020/11/26 Python
HTML5注册页面示例代码
2014/03/27 HTML / CSS
师德学习感言
2014/01/31 职场文书
室内设计专业自荐信
2014/05/31 职场文书
2014年幼儿园后勤工作总结
2014/11/10 职场文书
领导欢迎词致辞
2015/01/23 职场文书
2015年师德表现自我评价
2015/03/05 职场文书
asyncio异步编程之Task对象详解
2022/03/13 Python