Professional Software Consulting

cli_args.php

Function to convert command-line-interface arguments to a PHP array.
Source Code
<?php
/**
* Copyright (c) 2008, Corey's Consulting LLC.  All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* - Redistributions of source code must retain the above copyright notice,
*   this list of conditions and the following disclaimer.
* - Redistributions in binary form must reproduce the above copyright
*   notice, this list of conditions and the following disclaimer in the
*   documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/

//
// These are common functions used by all the scripts.
//

//*************************************************************************
// Convert command line toggles into an array:
//
// php file.php orphan --foo=bar -abc -AB 'hello world' --baz
//
// produces:
//
// Array
// (
//   [foo] => bar
//   [a] => true
//   [b] => true
//   [c] => true
//   [A] => true
//   [B] => hello world
//   [baz] => true
// )
//
// NOTE: command line arguments that do NOT have a dash in front of them
// are ignored (see the word "orphan" in the example above).
//
function parseCliArgs ( $args )
{
    $out = array();
    $last_arg = null;
    for($i = 1, $il = sizeof($args); $i < $il; $i++)
    {
        if( (bool)preg_match("/^--(.+)/", $args[$i], $match) )
        {
            $parts = explode("=", $match[1]);
            $key = preg_replace("/[^a-z0-9]+/", "", $parts[0]);
            if(isset($parts[1]))
            {
                $out[$key] = $parts[1];   
            }
            else
            {
                $out[$key] = true;   
            }
            $last_arg = $key;
        }
        else if((bool)preg_match("/^-([a-zA-Z0-9]+)/", $args[$i], $match))
        {
            for( $j = 0, $jl = strlen($match[1]); $j < $jl; $j++ )
            {
                $key = $match[1]{$j};
                $out[$key] = true;
            }
            $last_arg = $key;
        }
        else if($last_arg !== null)
        {
            $out[$last_arg] = $args[$i];
        }
    }
    return $out;
}    // end parseCliArgs()


?>

     Contact Us     

Something wrong with this page or this site? Let the webmaster know by clicking HERE
This website designed, implemented, and maintained by Corey Dulecki
© 2009-2012, Corey's Consulting LLC