在命令行下运行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关联数组的10个操作技巧
Jan 21 PHP
joomla jce editor 解决上传中文名文件失败问题
Jun 09 PHP
计算php页面运行时间的函数介绍
Jul 01 PHP
php实现aes加密类分享
Feb 16 PHP
Linux下PHP连接Oracle数据库
Aug 20 PHP
PHP CURL 内存泄露问题解决方法
Feb 12 PHP
微信公众号开发之语音消息识别php代码
Aug 08 PHP
PHP简单实现数字分页功能示例
Aug 24 PHP
thinkPHP数据查询常用方法总结【select,find,getField,query】
Mar 15 PHP
PHP PDOStatement::errorCode讲解
Jan 31 PHP
PHP SESSION机制的理解与实例
Mar 22 PHP
PHP实现字符串的全排列详解
Apr 24 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
《星际争霸2》终章已出 RTS时代宣告终结
2017/02/07 星际争霸
php实现的在线人员函数库
2008/04/09 PHP
关于使用coreseek并为其做分页的介绍
2013/06/21 PHP
php中Y2K38的漏洞解决方法实例分析
2014/09/22 PHP
PHP实现懒加载的方法
2015/03/07 PHP
利用php生成验证码
2017/02/23 PHP
PHP数据分析引擎计算余弦相似度算法示例
2017/08/08 PHP
基于PHP常用文件函数和目录函数整理
2017/08/17 PHP
PHP面向对象多态性实现方法简单示例
2017/09/27 PHP
PHP实现文件上传操作和封装
2020/03/04 PHP
十分钟打造AutoComplete自动完成效果代码
2009/12/26 Javascript
jQuery中prevUntil()方法用法实例
2015/01/08 Javascript
javascript实现动态标签云
2015/10/16 Javascript
jQuery实现移动端滑块拖动选择数字效果
2015/12/24 Javascript
JS实现的手机端精简幻灯片效果
2016/09/05 Javascript
ES6新特性之函数的扩展实例详解
2017/04/01 Javascript
浅谈node的事件机制
2017/10/09 Javascript
JS实现延迟隐藏功能的方法(类似QQ头像鼠标放上展示信息)
2017/12/28 Javascript
基于vue中解决v-for使用报红并出现警告的问题
2018/03/03 Javascript
node+express框架中连接使用mysql(经验总结)
2018/11/10 Javascript
Vue 中文本内容超出规定行数后展开收起的处理的实现方法
2019/04/28 Javascript
js函数和this用法实例分析
2020/03/13 Javascript
详解使用python3.7配置开发钉钉群自定义机器人(2020年新版攻略)
2020/04/01 Python
详解用Python调用百度地图正/逆地理编码API
2020/07/02 Python
html svg生成环形进度条的实现方法
2019/09/23 HTML / CSS
平面设计自荐信
2013/10/07 职场文书
英语商务邀请函范文
2014/01/16 职场文书
机械个人求职信范文
2014/01/24 职场文书
精神文明单位申报材料
2014/05/02 职场文书
工地安全标语
2014/06/07 职场文书
再婚婚前财产协议书范本
2014/10/19 职场文书
2014年财务经理工作总结
2014/12/08 职场文书
工作失职检讨书范文
2015/05/05 职场文书
毕业生求职自荐信(2016最新版)
2016/01/28 职场文书
Apache Pulsar结合Hudi构建Lakehouse方案分析
2022/03/31 Servers
使用CSS实现黑白格背景效果
2022/06/01 HTML / CSS