getopt() simply ignores unnecessary options specified in argv.Many times, it does not work well to handle errors in command line.A package PEAR::Console_Getopt can handle this problem, but it requires additonal installation.GNU getopt(1) does well at shell level.Following is my extended getopt() can detect unnecessary options:<?phpfunction getoptex($sopt, $lopt, &$ind){ global $argv, $argc; $sopts = getopt($sopt, $lopt); $sopts_cnt = count($sopts); $asopt = $sopt . implode("", range("a", "z")) . implode("", range("A", "Z")) . implode("", range("0", "9")); $asopts = getopt($asopt, $lopt); $asopts_cnt = count($asopts); $lopt_trim = array(); foreach ($lopt as $o) { $lopt_trim[] = trim($o, ":"); } $alopts_cnt = 0; $alopts_flag = true; for ($i = 1; $i < $argc; $i++) { if ($argv[$i] === "--") { break; } if (strpos($argv[$i], "--") === 0) { $alopts_cnt++; $o = substr($argv[$i], 2); if (! in_array($o, $lopt_trim)) { $alopts_flag = false; } else { if (in_array(($o . ":"), $lopt)) { $i++; if ($i >= $argc) { $alopts_flag = false; break; } } } } } if ($sopts_cnt != $asopts_cnt || (! $alopts_flag)) { return false; } else { return getopt($sopt, $lopt, $ind); }}?>