这个问题是关于php中的getopt函数的。我需要向php脚本传递两个参数,例如
php script.php -f filename -t filetype现在,根据文件类型,可以是u、c或s,我需要进行适当的操作。
我使用switch case来做同样的事情:
下面是我使用的代码:
// Get filename of input file when executing through command line.
$file = getopt("f:t:");切换大小写应该比较我从命令行传入的文件的类型(u、c或i),并相应地匹配它并执行操作。
switch("I am not sure what should go in there and this is wrong,Please advice")
{
case `Not sure`:
$p->ini();
break;
case `Not sure`:
$p->iniCon();
break;
case `Not sure`:
$p->iniImp();
break;
}敬请指教!
发布于 2010-03-12 01:28:04
如果您只是在您的PHP脚本(在我的机器上称为temp.php__)中放入如下内容:
<?php
$file = getopt("f:t:");
var_dump($file);并从命令行调用它,传递这两个参数:
php temp.php -f filename -t filetype你会得到这样的输出:
array(2) {
["f"]=>
string(8) "filename"
["t"]=>
string(8) "filetype"
}这意味着:
$file['f']包含为-f$file['t']包含为-t传递的值
从那里开始,如果您希望switch依赖于作为-t的值传递的选项,您将使用类似以下内容:
switch ($file['t']) {
case 'u':
// ...
break;
case 'c':
// ...
break;
case 'i':
// ...
break;
}基本上,你把:
要在switch()
cases中的可能值的变量的
有关更多信息,请阅读PHP手册中的:
manual page of switch
getopt()的
发布于 2011-11-29 14:02:09
我为此实现了一个getopt解析器,支持短的、长的选项名称、类型约束、选项打印。等,这个库已经维护了6年多。
简介:
<?php
use GetOptionKit\OptionCollection;
use GetOptionKit\OptionParser;
$options = new OptionCollection;
$spec = $options->add( 'f|foo:' , 'option require value' ); # returns spec object.
$options->add( 'b|bar+' , 'option with multiple value' );
$options->add( 'z|zoo?' , 'option with optional value' );
$options->add( 'f|foo:=i' , 'option require value, with integer type' );
$options->add( 'f|foo:=s' , 'option require value, with string type' );
$options->add( 'v|verbose' , 'verbose flag' );
$options->add( 'd|debug' , 'debug flag' );
$parser = new OptionParser;
$result = $parser->parse( array( 'program' , '-f' , 'foo value' , '-v' , '-d' ) );
$result = $parser->parse( $argv );
$spec = $result->verbose;
$spec = $result->debug;
$spec->value; # get valueGetOptionKit\OptionPrinter可以为您打印选项:
* Available options:
-f, --foo option requires a value.
-b, --bar option with multiple value.
-z, --zoo option with optional value.
-v, --verbose verbose message.
-d, --debug debug message.
--long long option name only.
-s short option name only.演示
请查看examples/demo.php。
运行:
% php examples/demo.php -f test -b 123 -b 333打印:
* Available options:
-f, --foo <value> option requires a value.
-b, --bar <value>+ option with multiple value.
-z, --zoo [<value>] option with optional value.
-v, --verbose verbose message.
-d, --debug debug message.
--long long option name only.
-s short option name only.
Enabled options:
* key:foo spec:-f, --foo <value> desc:option requires a value.
value => test
* key:bar spec:-b, --bar <value>+ desc:option with multiple value.
Array
(
[0] => 123
[1] => 333
)GetOptionKit在GitHub上:https://github.com/c9s/GetOptionKit
发布于 2010-08-20 05:18:57
你的方法有问题。如果用户错误地给出了下面的命令行怎么办。脚本将无法检测到它并失败,因为$file['t']将是一个数组。
php temp.php -f filename -t filetype -f filename2https://stackoverflow.com/questions/2427176
复制相似问题