在命令行下运行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实现的简单压缩英文字符串的代码
Apr 24 PHP
析构函数与php的垃圾回收机制详解
Oct 28 PHP
PHP中使用curl伪造IP的简单方法
Aug 07 PHP
php实现简易聊天室应用代码
Sep 23 PHP
Yii实现文章列表置顶功能示例
Oct 18 PHP
Docker配置PHP开发环境教程
Dec 21 PHP
WHOOPS PHP调试库的使用
Sep 29 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
Nov 16 PHP
Laravel中unique和exists验证规则的优化详解
Jan 28 PHP
PHP5.5新特性之yield理解与用法实例分析
Jan 11 PHP
PHP中检查isset()和!empty()函数的必要性
Feb 13 PHP
PHP基于面向对象封装的分页类示例
Mar 15 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 三元运算符实例详细介绍
2016/12/15 PHP
PHP实现十进制数字与二十六进制字母串相互转换操作示例
2018/08/10 PHP
PHP封装的分页类与简单用法示例
2019/02/25 PHP
Javascript的一种模块模式
2008/03/22 Javascript
jquery.lazyload  实现图片延迟加载jquery插件
2010/02/06 Javascript
javaScript使用EL表达式的几种方式
2014/05/27 Javascript
js时间日期格式化封装函数
2014/12/02 Javascript
JS打开新窗口防止被浏览器阻止的方法
2015/01/03 Javascript
学习JavaScript设计模式(接口)
2015/11/26 Javascript
JavaScript实现短信倒计时60s
2017/10/09 Javascript
javaScript实现鼠标在文字上悬浮时弹出悬浮层效果
2020/04/12 Javascript
详解Vue webapp项目通过HBulider打包原生APP
2018/06/29 Javascript
Javascript读写cookie的实例源码
2019/03/16 Javascript
微信小程序自定义tabBar的踩坑实践记录
2020/11/06 Javascript
linux下python抓屏实现方法
2015/05/22 Python
python实现爬虫下载美女图片
2015/07/14 Python
Python网络爬虫中的同步与异步示例详解
2018/02/03 Python
TensorFlow自定义损失函数来预测商品销售量
2020/02/05 Python
解决在keras中使用model.save()函数保存模型失败的问题
2020/05/21 Python
pytorch 限制GPU使用效率详解(计算效率)
2020/06/27 Python
python脚本第一行如何写
2020/08/30 Python
python Xpath语法的使用
2020/11/26 Python
使用Python制作一个数据预处理小工具(多种操作一键完成)
2021/02/07 Python
HTML5+CSS3绘制锯齿状的矩形
2016/03/01 HTML / CSS
娇韵诗加拿大官网:Clarins加拿大
2017/11/20 全球购物
世界顶级俱乐部的官方球衣和套装:Subside Sports
2018/04/22 全球购物
什么是静态路由?什么是动态路由?各自的特点是什么?
2015/09/16 面试题
成品仓管员工作职责
2013/12/29 职场文书
企业爱岗敬业演讲稿
2014/09/04 职场文书
计划生育工作汇报
2014/10/28 职场文书
2014年设计师工作总结
2014/11/25 职场文书
团代会邀请函
2015/02/02 职场文书
杭州黄龙洞导游词
2015/02/10 职场文书
2016新年年会主持词
2015/07/06 职场文书
Windows Server 2016 配置 IIS 的详细步骤
2022/04/28 Servers
Mysql如何查看是否使用到索引
2022/12/24 MySQL