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

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