2016-04-17 7 views
1

Gibt es eine schnelle Möglichkeit, die gefundenen Optionen mit getopt von $ argv zu entfernen?Entfernen von Optionen gefunden in getopt von argv

Grundsätzlich habe ich

php trout.php --plugin dozer /opt/webapplications/Word/readme.log 

In meinem $ options = getopt(); Ich habe

Array 
(
    [plugin] => dozer 
) 

und $ argv hat folgende ...

Array 
(
    [0] => --plugin 
    [1] => dozer 
    [2] => /opt/webapplications/Word/readme.log 
) 

Ich möchte argv $ nur haben

Array 
(
    [0] => /opt/webapplications/Word/readme.log 
) 

Ich weiß, es ist array_shift das erste Array Pop Element aus, und ich habe Schleifen in der Vergangenheit gesehen, die nur durch die $ argv knacken alle Elemente aus, aber ich frage mich, ob es eine schnelle und einfache Möglichkeit ist, dies mit nativen PHP zu tun ...

Antwort

0

Dies ist, was ich

function __construct($args) { 

    $this->options = getopt($this->shortopts, $this->longopts); 

    array_shift($args); 

    while(count($args) > 1) { 

     if (strpos($args[0], '-') !== false && strpos($args[0], '-') == 0) { 

      array_shift($args); 

      if(in_array($args[0], $this->options)) { 

       array_shift($args); 
      } 
     } 
     else { 

      break; 
     } 
    } 

    $this->args = $args; 
} 
+0

mit endete Es dauert nicht berücksichtigt die Möglichkeit, mit einem „=“ wie folgt angegeben: --plugin = Planierraupe –