在命令行下运行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中文件上传的安全问题
Oct 09 PHP
献给php初学者(入门学习经验谈)
Oct 12 PHP
php插入中文到sqlserver 2008里出现乱码的解决办法分享
Jul 19 PHP
php类中private属性继承问题分析
Nov 01 PHP
PHP检测移动设备类mobile detection使用实例
Apr 14 PHP
PHP函数strip_tags的一个bug浅析
May 22 PHP
30个php操作redis常用方法代码例子
Jul 05 PHP
php 问卷调查结果统计
Oct 08 PHP
php实现贪吃蛇小游戏
Jul 26 PHP
laravel学习教程之存取器
Jul 30 PHP
PHP 获取指定地区的天气实例代码
Feb 08 PHP
php命名空间设计思想、用法与缺点分析
Jul 17 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
php实现的遍历文件夹下所有文件,编辑删除
2010/01/05 PHP
php字符编码转换之gb2312转为utf8
2013/10/28 PHP
Laravel5中contracts详解
2015/03/02 PHP
FleaPHP框架数据库查询条件($conditions)写法总结
2016/03/19 PHP
Laravel路由研究之domain解决多域名问题的方法示例
2019/04/04 PHP
PHP开发API接口签名生成及验证操作示例
2020/05/27 PHP
validator验证控件使用代码
2010/11/23 Javascript
javascript实现俄罗斯方块游戏的思路和方法
2015/04/27 Javascript
javascript操作ul中li的方法
2015/05/14 Javascript
js判断浏览器类型及设备(移动页面开发)
2015/07/30 Javascript
JavaScript操作URL的相关内容集锦
2015/10/29 Javascript
jquery实现网页的页面平滑滚动效果代码
2015/11/02 Javascript
JS平滑无缝滚动效果的实现代码
2016/05/06 Javascript
jQuery.Uploadify插件实现带进度条的批量上传功能
2016/06/08 Javascript
JQuery DIV 动态隐藏和显示的方法
2016/06/23 Javascript
原生js和css实现图片轮播效果
2017/02/07 Javascript
Angular实现购物车计算示例代码
2017/02/21 Javascript
详解Vue 普通对象数据更新与 file 对象数据更新
2017/04/26 Javascript
jQuery加PHP实现图片上传并提交的示例代码
2020/07/16 jQuery
vite2.0+vue3移动端项目实战详解
2021/03/03 Vue.js
[02:03]DOTA2亚洲邀请赛 HGT战队出场宣传片
2015/02/07 DOTA
Python编程使用tkinter模块实现计算器软件完整代码示例
2017/11/29 Python
python+matplotlib绘制简单的海豚(顶点和节点的操作)
2018/01/02 Python
python实现单向链表详解
2018/02/08 Python
python 解决selenium 中的 .clear()方法失效问题
2020/09/01 Python
python和C++共享内存传输图像的示例
2020/10/27 Python
GIVENCHY纪梵希官方旗舰店:高定彩妆与贵族护肤品
2018/04/16 全球购物
销售经理工作职责
2014/02/03 职场文书
电气个人求职信范文
2014/02/04 职场文书
小学毕业感言300字
2014/02/19 职场文书
少先队活动总结
2014/08/29 职场文书
2014教师“四风问题”对照检查材料思想汇报
2014/09/16 职场文书
2014年村计划生育工作总结
2014/11/14 职场文书
2015年党员自我剖析材料
2014/12/17 职场文书
少先大队干部竞选稿
2015/11/20 职场文书
2016暑期校本培训心得体会
2016/01/08 职场文书