在命令行下运行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&amp;&amp;mysql)六
Oct 09 PHP
一个简单的MySQL数据浏览器
Oct 09 PHP
php strlen mb_strlen计算中英文混排字符串长度
Jul 10 PHP
使用GROUP BY的时候如何统计记录条数 COUNT(*) DISTINCT
Apr 23 PHP
PHP 使用pcntl和libevent 实现Timer功能
Oct 27 PHP
php导出csv数据在浏览器中输出提供下载或保存到文件的示例
Apr 24 PHP
php获取textarea的值并处理回车换行的方法
Oct 20 PHP
php数组操作之键名比较与差集、交集赋值的方法
Nov 10 PHP
PHP中把有符号整型转换为无符号整型方法
May 27 PHP
PHP的伪随机数与真随机数详解
May 27 PHP
thinkphp3.x中display方法及show方法的用法实例
May 19 PHP
Laravel 实现Controller向blade前台模板赋值的四种方式小结
Oct 22 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
PHP5中Cookie与 Session使用详解
2013/04/30 PHP
JoshChen_web格式编码UTF8-无BOM的小细节分析
2013/08/16 PHP
PHP抓取网页、解析HTML常用的方法总结
2015/07/01 PHP
php使用gzip压缩传输js和css文件的方法
2015/07/29 PHP
PHP基于反射机制实现插件的可插拔设计详解
2016/11/10 PHP
JAVASCRIPT  THIS详解 面向对象
2009/03/25 Javascript
javascript之通用简单的table选项卡实现(二)
2010/05/09 Javascript
Firefox中autocomplete=&quot;off&quot; 设置不起作用Bug的解决方法
2011/03/25 Javascript
[JSF]使用DataModel处理表行事件的实例代码
2013/08/05 Javascript
js中的eventType事件及其浏览器支持性介绍
2013/11/29 Javascript
解决JQeury显示内容没有边距内容紧挨着浏览器边线
2013/12/20 Javascript
javascript制作的网页侧边弹出框思路及实现代码
2014/05/21 Javascript
js实现同一页面可多次调用的图片幻灯切换效果
2015/02/28 Javascript
Vue.js框架路由使用方法实例详解
2017/08/25 Javascript
react-native-fs实现文件下载、文本存储的示例代码
2017/09/22 Javascript
Angular6封装http请求的步骤详解
2018/08/13 Javascript
JS+canvas五子棋人机对战实现步骤详解
2020/06/04 Javascript
vue接通后端api以及部署到服务器操作
2020/08/13 Javascript
django1.8使用表单上传文件的实现方法
2016/11/04 Python
Python中文件I/O高效操作处理的技巧分享
2017/02/04 Python
Python之inspect模块实现获取加载模块路径的方法
2018/10/16 Python
使用Keras训练好的.h5模型来测试一个实例
2020/07/06 Python
CSS3实例分享--超炫checkbox复选框和radio单选框
2014/09/01 HTML / CSS
mui几种页面跳转方式对比总结概括
2017/08/18 HTML / CSS
浅析HTML5 meta viewport参数
2020/10/28 HTML / CSS
Ted Baker英国官网:男士和女士服装及配件
2017/03/13 全球购物
英国复古皮包品牌:Beara Beara
2018/07/18 全球购物
澳大利亚最大的在线美发和美容零售商之一:My Hair Care & Beauty
2019/08/24 全球购物
优秀教师先进事迹
2014/01/22 职场文书
优秀班集体获奖感言
2014/02/03 职场文书
会计专业应届生自荐信
2014/02/07 职场文书
委托协议书范本
2014/04/22 职场文书
银行领导班子四风对照检查材料
2014/09/27 职场文书
干部考察材料范文
2014/12/24 职场文书
《你在为谁工作》心得体会(共8篇)
2016/01/20 职场文书
关于Javascript闭包与应用的详解
2021/04/22 Javascript