Recipe 20.2 Parsing Program Arguments
20.2.1 Problem
You want to process arguments passed
on the command line.
20.2.2 Solution
Look in $_SERVER['argc'] for the number of
arguments and $_SERVER['argv'] for their values.
The first argument, $_SERVER['argv'][0], is the
name of script that is being run:
if ($_SERVER['argc'] != 2) {
die("Wrong number of arguments: I expect only 1.");
}
$size = filesize($_SERVER['argv'][1]);
print "I am $_SERVER[argv][0] and report that the size of ";
print "$_SERVER[argv][1] is $size bytes.";
20.2.3 Discussion
In order to set options based on flags passed from the command line,
loop through $_SERVER['argv'] from
1 to $_SERVER['argc']:
for ($i = 1; $i < $_SERVER['argc']; $i++) {
switch ($_SERVER['argv'][$i]) {
case '-v':
// set a flag
$verbose = 1;
break;
case '-c':
// advance to the next argument
$i++;
// if it's set, save the value
if (isset($_SERVER['argv'][$i])) {
$config_file = $_SERVER['argv'][$i];
} else {
// quit if no filename specified
die("Must specify a filename after -c");
}
break;
case '-q':
$quiet = 1;
break;
default:
die('Unknown argument: '.$_SERVER['argv'][$i]);
break;
}
}
In this example, the -v and -q
arguments are flags that set $verbose and
$quiet, but the -c argument is
expected to be followed by a string. This string is assigned to
$config_file.
20.2.4 See Also
Recipe 20.3 for more parsing arguments with
getopt; documentation on
$_SERVER['argc'] and
$_SERVER['argv'] at
http://www.php.net/reserved.variables.
|