在命令行下运行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 调试工具Debug Tools
Apr 30 PHP
深入PHP magic quotes的详解
Jun 17 PHP
PHP Class&amp;Object -- PHP 自排序二叉树的深入解析
Jun 25 PHP
PHP中读取照片exif信息的方法
Aug 20 PHP
PHP中比较时间大小实例
Aug 21 PHP
PHP中round()函数对浮点数进行四舍五入的方法
Nov 19 PHP
PHP加密解密实例分析
Dec 25 PHP
PHP+Ajax验证码验证用户登录
Jul 20 PHP
kindeditor 加入七牛云上传的实例讲解
Nov 12 PHP
php用户名的密码加密更安全的方法
Jun 21 PHP
laravel-admin的图片删除实例
Sep 30 PHP
php使用redis的几种常见操作方式和用法示例
Feb 20 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 PDO判断连接是否可用的实现方法
2017/04/03 PHP
PHP 7.0新增加的特性介绍
2017/06/08 PHP
详解PHP防止直接访问.php 文件的实现方法
2017/07/28 PHP
Django 中 cookie的使用
2017/08/17 PHP
Javascript类定义语法,私有成员、受保护成员、静态成员等介绍
2011/12/08 Javascript
jqplot通过ajax动态画折线图的方法及思路
2013/12/08 Javascript
jQuery知识点整理
2015/01/30 Javascript
JavaScript实现在标题栏上显示当前日期的方法
2015/03/19 Javascript
简化版手机端照片预览组件
2015/04/13 Javascript
JavaScript中的lastIndexOf()方法使用详解
2015/06/06 Javascript
Vue 过渡(动画)transition组件案例详解
2017/01/22 Javascript
javaScript 逻辑运算符使用技巧整理
2017/05/03 Javascript
vue子路由跳转实现tab选项卡
2019/07/24 Javascript
jquery 回调操作实例分析【回调成功与回调失败的情况】
2019/09/27 jQuery
微信小程序学习总结(四)事件与冒泡实例分析
2020/06/04 Javascript
[01:19:54]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#1Alliance VS EHOME
2016/03/03 DOTA
用Python一键搭建Http服务器的方法
2018/06/01 Python
使用 Python 处理3万多条数据只要几秒钟
2020/01/19 Python
总结html5自定义属性有哪些
2020/04/01 HTML / CSS
BCBG官网:BCBGMAXAZRIA
2017/12/29 全球购物
上海中网科技笔试题
2012/02/19 面试题
大专自我鉴定范文
2013/10/01 职场文书
上课打牌的检讨书
2014/02/15 职场文书
最美乡村医生事迹材料
2014/06/02 职场文书
人民调解员培训方案
2014/06/05 职场文书
校园元旦活动总结
2014/07/09 职场文书
十八大宣传标语
2014/10/09 职场文书
优秀英文求职信范文
2015/03/19 职场文书
自主招生自荐信怎么写
2015/03/24 职场文书
风之谷观后感
2015/06/11 职场文书
网吧管理制度范本
2015/08/05 职场文书
PHP中strval()函数实例用法
2021/06/07 PHP
分享一些Java的常用工具
2021/06/11 Java/Android
浅谈Python从全局与局部变量到装饰器的相关知识
2021/06/21 Python
MySQL 数据恢复的多种方法汇总
2021/06/21 MySQL
世界各国短波电台对东亚播送时间频率表(SW)
2021/06/28 无线电