Prosty zgrabny i działający parser argumentów z linii komend (--argument wartosc, -a wartosci lub po prostu -a). Skrypt sprawdzony pod Linuksem, ale pod innymi systemami powinien również działać.

jesli po --argument podamy wartosc wtedy zmienna $arg['argument'] = "wartosc",
jesli wartosc nie zostala podana lub jest to nastepny argument, wtedy $arg['argument'] = true

Kilka przykładów:

Kod
./skrypt --argument wartosc -a inna_wartosc
Array
(
        [argument] => wartosc
        [a] => inna_wartosc
)


Kod
./skrypt --argument -a
Array
(
        [argument] => 1
        [a] => 1
)


Kod
./skrypt --agument wartosc -a --cycki dupa -p costam
Array
(
    [agument] => wartosc
    [a] => 1
    [cycki] => dupa
    [p] => costam
)


Argumenty znajdują się w tablicy $arg

Kod:
  1. <?php
  2.  
  3. # $argv[0] to nazwa skryptu - usuwamy z tablicy
  4. unset( $argv[0] );
  5.  
  6. foreach( $argv as $key => $args )
  7. {
  8.        if( preg_match( "/^-([a-zA-Z0-9])$/", $args, $onematch ) )
  9.                $match = $onematch;
  10.        elseif( preg_match( "/^--([a-zA-Z0-9-]+)$/", $args, $doublematch ) )
  11.                $match = $doublematch;
  12.        else
  13.                continue;
  14.  
  15.        $value = $argv[$key + 1];
  16.        if( $value != NULL )
  17.        {
  18.                if( ! preg_match( "/^--[a-zA-Z0-9-]+$/", $value ) && ! preg_match( "/^-[a-zA-Z0-9]$/", $value ) )
  19.                        $arg["{$match[1]}"] = $value;
  20.                elseif( preg_match( "/^--[a-zA-Z0-9-]+$/", $value ) || preg_match( "/^-[a-zA-Z0-9]$/", $value ) )
  21.                        $arg["{$match[1]}"] = true;
  22.                else
  23.                        $arg["{$match[1]}"] = true;
  24.        }
  25.        else
  26.        {
  27.                $arg["{$match[1]}"] = TRUE;
  28.        }
  29. }
  30. ?>