### PHP在命令行中传参的三种方式
By:0x584A Date:2016-04-13 23:30:32
第一种 通过$argc or $argv
脚本内代码:
<?php # $argc 接收参数的个数 echo "接收到{$argc}个参数"; # $argv 接收的具体参数 var_dump($argv);?>
在终端中直接运行,并接上参数。
php Ex_1.php 0x584A
执行结果:
接收到2个参数array(2) { [0] => string(8) "Ex_1.php" [1] => string(6) "0x584A" }
第二种 通过getopt()函数
脚本内代码:
<?php /* * getopt参数说明 * a 定义参数名 后面的:代表必选,与后面的值可以用空格分开 * ::代表可选项,与值之间不允许又空格 */ $param_arr = getopt('a:b::'); var_dump($param_arr);?>
在终端中直接运行,并接上参数。
php Ex_2.php -a 0x584A -bJk
执行结果:
array(2) { 'a' => string(6) "0x584A" 'b' => string(2) "Jk" }
如果我们输入的是:php Ex_2.php -a 0x584A -b 123
执行结果:'b' => bool(false)
因为-b参数中间有空格,则返回结果中接收不到该值。
第三种 使用CLI
常量名称 | 描述 |
---|---|
STDIN | 标准的输入设备 |
STDOUT | 标准的输出设备 |
STDERR | 标准的输出设备 |
脚本内代码:
<?php # STDOUT 代表的标准输入 STDIN 代表的标准输出 fwrite(STDOUT,'请输入您的博客名称:'); # fwrite 表示往标准输出写字符串,fgets 命令行出现等待输入 $arg = trim(fgets(STDIN)); echo "您输入的名称:".$arg."n";?>
在终端中直接运行,并接上参数。
php Ex_3.php
执行结果:
请输入您的博客名称:jgeek.cn 您输入的名称:jgeek.cn
原文始发于微信公众号(一个人的安全笔记):PHP在命令行中传参的三种方式
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论