在命令行下运行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 设计模式之 单例模式
Dec 19 PHP
php与XML、XSLT、Mysql的结合运用实现代码
Nov 19 PHP
PHP 杂谈《重构-改善既有代码的设计》之五 简化函数调用
May 07 PHP
PHP的curl实现get,post和cookie(实例介绍)
Jun 17 PHP
PHP中HTML标签过滤技巧
Jan 07 PHP
php解压文件代码实现php在线解压
Feb 13 PHP
CI框架中zip类应用示例
Jun 17 PHP
PHP输出一个等腰三角形的方法
May 12 PHP
php 批量查询搜狗sogou代码分享
May 17 PHP
PHP ajax 异步执行不等待执行结果的处理方法
May 27 PHP
PHP使用curl函数发送Post请求的注意事项
Nov 26 PHP
Laravel中GraphQL接口请求频率实战记录
Sep 01 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
Smarty日期时间操作方法示例
2016/11/15 PHP
PHP数据分析引擎计算余弦相似度算法示例
2017/08/08 PHP
PHP实现的最大正向匹配算法示例
2017/12/19 PHP
php设计模式之工厂方法模式分析【星际争霸游戏案例】
2020/01/23 PHP
经常用的图片在容器中的水平垂直居中实例
2007/06/10 Javascript
js 设置选中行的样式的实现代码
2010/05/24 Javascript
NodeJs基本语法和类型
2015/02/13 NodeJs
javascript实现状态栏文字首尾相接循环滚动的方法
2015/07/22 Javascript
javascript密码强度校验代码(两种方法)
2015/08/10 Javascript
跟我学习javascript的this关键字
2020/05/28 Javascript
Node.js静态文件服务器改进版
2016/01/10 Javascript
JavaScript 实现的checkbox经典实例分享
2016/10/16 Javascript
基于jQuery实现Tabs选项卡自定义插件
2016/11/21 Javascript
Node.js中如何合并两个复杂对象详解
2016/12/31 Javascript
基于JavaScript实现拖动滑块效果
2017/02/16 Javascript
原生javascript移动端滑动banner效果
2017/03/10 Javascript
node文件上传功能简易实现代码
2017/06/16 Javascript
Iscrool下拉刷新功能实现方法(推荐)
2017/06/26 Javascript
JavaScript requestAnimationFrame动画详解
2017/09/14 Javascript
element-ui 表格实现单元格可编辑的示例
2018/02/26 Javascript
使用live-server快速搭建本地服务器+自动刷新的方法
2018/03/09 Javascript
vue微信分享到朋友圈 vue微信发送给好友
2018/11/28 Javascript
Python Requests 基础入门
2016/04/07 Python
Python实现求笛卡尔乘积的方法
2017/09/16 Python
Python实现利用最大公约数求三个正整数的最小公倍数示例
2017/09/30 Python
基于随机梯度下降的矩阵分解推荐算法(python)
2018/08/31 Python
Python实现监控键盘鼠标操作示例【基于pyHook与pythoncom模块】
2018/09/04 Python
python 日期排序的实例代码
2019/07/11 Python
Windows系统Python直接调用C++ DLL的方法
2019/08/01 Python
python matplotlib库直方图绘制详解
2019/08/10 Python
python matplotlib实现将图例放在图外
2020/04/17 Python
linux比较文件内容的命令是什么
2013/03/04 面试题
员工工作及收入证明
2014/10/28 职场文书
迎新生欢迎词
2015/01/23 职场文书
大学生个人年度总结范文
2015/02/15 职场文书
MySQL学习之基础操作总结
2022/03/19 MySQL