PHP_Compat
[ class tree: PHP_Compat ] [ index: PHP_Compat ] [ all elements ]

Source for file getopt.php

Documentation is available at getopt.php

  1. <?php
  2. // $Id: getopt.php,v 1.3 2008/11/24 04:18:49 aidan Exp $
  3.  
  4. define('PHP_COMPAT_GETOPT_NO_VALUE'0);
  5. define('PHP_COMPAT_GETOPT_VALUE_REQUIRED'1);
  6. define('PHP_COMPAT_GETOPT_VALUE_OPTIONAL'2);
  7.  
  8. /**
  9.  * Replace getopt()
  10.  *
  11.  * @category    PHP
  12.  * @package     PHP_Compat
  13.  * @license     LGPL - http://www.gnu.org/licenses/lgpl.html
  14.  * @copyright   2004-2007 Aidan Lister <aidan@php.net>, Arpad Ray <arpad@php.net>
  15.  * @link        http://php.net/function.getopt
  16.  * @author      Jim Wigginton <terrafrost@php.net>
  17.  * @version     $Revision: 1.3 $
  18.  * @since       PHP 4.0.4
  19.  */
  20. function php_compat_getopt($options$longopts = NULL)
  21. {
  22.     global $argv$argc;
  23.     
  24.     $output = array();
  25.     $opt '';
  26.     
  27.     if (is_array($options)) {
  28.         user_error('getopt() expects parameter 1 to be string, array given'E_USER_WARNING);
  29.         return false;
  30.     }
  31.     
  32.     for ($i = 1; $i $argc$i++{
  33.         switch (true{
  34.             case is_array($longopts&& substr($argv[$i]02== '--':
  35.                 $pos strpos($argv[$i]'=');
  36.                 $opt is_int($possubstr($argv[$i]2$pos - 2substr($argv[$i]2);
  37.                 
  38.                 list($matcharray_values(preg_grep('#^' preg_quote($opt'#'':{0,2}$#'$longopts));
  39.                 if (is_null($match)) {
  40.                     break;
  41.                 }
  42.                 $value $pos === false ? null : substr($argv[$i]$pos + 1);
  43.                 $type strlen(substr($matchstrlen($opt)));
  44.                 
  45.                 php_compat_getopt_helper($opt$value$type$output);
  46.                 break;
  47.             case $argv[$i][0== '-' && preg_match('#' preg_quote($argv[$i][1]'#''(:{0,2})#'$options$matches):
  48.                 $opt $argv[$i][1];
  49.                 $type strlen($matches[1]);
  50.                 $value substr($argv[$i]2);
  51.                 if ($type == 0{
  52.                     if ($value{
  53.                         $argv[$i'-' $value;
  54.                         --$i;
  55.                     }
  56.                     $value = null;
  57.                 }
  58.                 
  59.                 php_compat_getopt_helper($opt$value$type$output);
  60.                 break;
  61.             case !empty($opt):
  62.                 if (isset($output[$opt]&& is_array($output[$opt])) {
  63.                     $output[$opt][count($output[$opt]- 1$argv[$i];
  64.                 else {
  65.                     $output[$opt$argv[$i];
  66.                 }
  67.                 $opt '';
  68.         }
  69.         
  70.         if (!empty($value|| $type == PHP_COMPAT_GETOPT_NO_VALUE{
  71.             $opt '';
  72.         }
  73.     }
  74.     
  75.     return $output;
  76. }
  77.  
  78. function php_compat_getopt_helper($opt$value$type&$output{
  79.     switch ($type{
  80.         case PHP_COMPAT_GETOPT_NO_VALUE:
  81.             switch (true{
  82.                 case !isset($output[$opt]):
  83.                     $output[$opt= false;
  84.                     break;
  85.                 case is_array($output[$opt]):
  86.                     $output[$opt][= false;
  87.                     break;
  88.                 default:
  89.                     $output[$opt= array($output[$opt]false);
  90.             }
  91.             break;
  92.         case PHP_COMPAT_GETOPT_VALUE_REQUIRED:
  93.             if (!empty($value)) {
  94.                 switch (true{
  95.                     case !isset($output[$opt]):
  96.                         $output[$opt$value;
  97.                         break;
  98.                     case is_array($output[$opt]):
  99.                         $output[$opt][$value;
  100.                         break;
  101.                     default:
  102.                         $output[$opt= array($output[$opt]$value);
  103.                 }
  104.             }
  105.             break;
  106.         case PHP_COMPAT_GETOPT_VALUE_OPTIONAL:
  107.             $value !empty($value$value : false;
  108.             switch (true{
  109.                 case !isset($output[$opt]):
  110.                     $output[$opt$value;
  111.                     break;
  112.                 case is_array($output[$opt]):
  113.                     $output[$opt][$value;
  114.                     break;
  115.                 default:
  116.                     $output[$opt= array($output[$opt]$value);
  117.             }
  118.     }
  119. }
  120.  
  121. // Define
  122. if (!function_exists('getopt')) {
  123.     function getopt($options$longopts = NULL{
  124.         return php_compat_getopt($options$longopts);
  125.     }
  126. }
  127. ?>

Documentation generated on Mon, 11 Mar 2019 15:26:35 -0400 by phpDocumentor 1.4.4. PEAR Logo Copyright © PHP Group 2004.