Scripts

getOpt_array

Ik gebruik deze op mijn eigen website om de arguments te parsen die zijn meegegeven met de commando's die gebruikers ingeven. vermits php's eigen getopt niet werkt met gwne variablen dacht ik "ik schrijf het gewoon zelf!" hier is mijn benadering tot een getopt functie die mogelijke arguments uit een variable plukt (gescheiden door een spatie(s)) en deze in een array met hun waarde zet. bv: output: Array ( [--test] => 22 [-gogo] => gadget [-wonderwall] => foo-bar [-yezz] => 1 ) hopelijk is dit handig voor iemand ;)

getoptarray
<?
/*
GetOpt implementation for Subutux CLI
-------------------------------------

@author subutux <[email protected]>
@func getopt_array($agruments)
@edit 06/01/2010
usage:

$agruments = "--test 22 -gogo=gadget -wonderwall foo-bar -yezz";
$opts = getopt_array($agruments);
echo "<pre>";
print_r($opts);
echo "</pre>";

output:

Array
(
	[--test] => 22
	[-gogo] => gadget
	[-wonderwall] => foo-bar
	[-yezz] => 1
)
*/
function getopt_array($agrs){
$opts = array();
$agrs = preg_split("/\s+/",$agrs);
// ik gebruik hier i.p.v. de explode functie, preg_split omdat, als er meerdere spaties zijn,
// deze als lege waardes in de array $args komen te staan en zorgt voor (kleine maar toch) vertraging.
reset($agr);
	while (list($key, $val) = each($agrs)) {

		if (preg_match("/^-(.*)=(.*)/",$val)){
			$opt = explode ("=",$val);
			$opts[$opt[0]] = $opt[1];
			}
		elseif (preg_match("/^-/",$val)){
			$next_agr = $agrs[$key+1];
			if (!preg_match("/^-/",$next_agr)){
				$opts[$val] = $next_agr;
			} else {
				$opts[$val] = true;
			}
		}
	}
return $opts;
}
?>

Reacties

0
Nog geen reacties.