20.1. Parsing Program Arguments
Problem
You want to process arguments passed on the command line.
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.";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.
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.
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access