OK, Quindi PHP ha una funzione integrata getopt() che restituisce informazioni su quali opzioni del programma l'utente ha fornito. Solo, a meno che mi manchi qualcosa, è completamente rotto! Dal manuale:Dopo aver usato getopt() di PHP, come posso dire quali argomenti rimangono?
L'analisi delle opzioni termina alla prima non opzione trovata, tutto ciò che segue viene scartato.
Così getopt()
restituisce un array con il valido e analizzato solo opzioni. È ancora possibile vedere l'intera riga di comando originale guardando a , che rimane invariato, ma come si dice a dove nella riga di comando getopt()
interrompe l'analisi degli argomenti? È essenziale sapere questo se si desidera trattare il resto di una riga di comando come altre cose (come, ad esempio, i nomi dei file).
Ecco un esempio ...
Supponiamo che io voglio creare uno script per accettare i seguenti argomenti:
Usage: test [OPTION]... [FILE]...
Options:
-a something
-b something
-c something
allora potrei chiamare getopt()
come questo:
$args = getopt('abc');
E, se ho eseguito la sceneggiatura in questo modo:
$ ./test.php -a -bccc file1 file2 file3
dovrei aspettare di avere la seguente matrice restituita a me:
Array
(
[a] =>
[b] =>
[c] => Array
(
[0] =>
[1] =>
[2] =>
)
)
Quindi la domanda è questa: come sulla Terra faccio a sapere che i tre non analizzata, non sia un'opzione FILE
argomentazioni partono da $argv[ 3 ]
? ??
Si potrebbe guardare in Console_GetOpt (http://stackoverflow.com/questions/1023095/phps-command-line-option-parsing-howto) ma richiede PEAR. – andig
Hai specificato il file come ultimo parametro in modo da poter eseguire '$ argv [count ($ argv) - 1]' – EaterOfCode
@EaterOfCode: non è sufficiente. È possibile specificare qualsiasi numero di file, quindi è necessario sapere quanti argomenti non-opzione non analizzati ci sono alla fine. – edam