Newsgroup: it.comp.www.php
Titolo: separare nomi di file dalle opzioni

<?php // debug.php
var_dump($argv);
?>
 
Adesso se apro il terminale di linux e do il comando
 
php debug.php -m abc.txt 2.txt --long-val -x
 
ottengo
 
array(6) {
   [0] =>
   string(47) "/home/rino/link/storage/web/shortcuts/debug.php"
   [1] =>
   string(2) "-m"
   [2] =>
   string(7) "abc.txt"
   [3] =>
   string(5) "2.txt"
   [4] =>
   string(10) "--long-val"
   [5] =>
" string(3) "-x
}
 
Però volevo sapere se c'è un modo per separare i nomi di file (abc.txt, 
2.txt) dalle opzioni (-m, --long-val, -x) ?
Cioè esiste una funzione già pronta, o me la devo scrivere?

 Cioè esiste una funzione già pronta, o me la devo scrivere?
 
getopt


Rileggendo l'OP vuole una cosa più subdola, vuole gli argomenti che non 
sono opzioni (i "nomi di file") separati dagli argomenti, getopt non lo 
aiuta perché
"""Note:
The parsing of options will end at the first non-option found, anything 
that follows is discarded."""
 
La soluzione è usare una sintassi ordinata quando si invoca il 
programma da riga di comando, prima tutte le opzioni e poi il resto.
 
-- 
Andrea
 


il premio non c'è per chi vuole rispondere per primo senza almeno 
cercare di capire la domanda iniziale.
Il premio non c'è!!!


 
farò così
 


La domanda l'ho capita.
Quello che non hai capito tu è che è la risposta è: "metti i parametri come
fanno tutti gli altri e fai parsing come fanno tutti gli altri".
 
Trova una soluzione alla tua domanda iniziale ed avrai solo utenti confusi.
 
Ciao!

2.txt) dalle opzioni (-m, --long-val, -x) ?
 
Che vuol dire "separare"? Distinguere?
 
	if ('-' == substr($string, 0, 1)) {
		// Opzione.
	} else {
		// Nome di file, probabilmente.
	}
 
Altrimenti preg_filter(), o se sai quali sono le opzioni, array_intersect()
e/o array_diff().
 
Leonardo
 
-- 
 
Questi non hanno speranza di morte; e la lor cieca vita e' tanto bassa,
Che 'nvidiosi son d'ogne altra sorte. Fama di loro il mondo esser non lassa;
Misericordia e Giustizia li sdegna; non ragioniam di lor, ma guarda e passa.

 Trova una soluzione alla tua domanda iniziale ed avrai solo utenti confusi.
 
????!!!!!!!!!
a questo punto facciamo buonanotte che è meglio
 
 


 
si può fare anche così ma preferisco non reinventare la ruota; non a 
caso avevo scritto


 a questo punto facciamo buonanotte che è meglio
 
Dopo aver visto il tono di queste risposte sto cercando di capire se 
sei un "bambino vero" come Pinocchio o solo un troll.
 
Il gruppo è già a basso volume e sinceramente non fai un piacere a te 
stesso rispondendo in questa maniera, ad un certo punto non riceverai 
più risposte da quei pochi che hanno qualcosa di valido da dire.
 
Per evitare questa situazione valgono i soliti [1, 2].
In particolare hai mostrato quello che ottenevi ma non quello che 
intendevi ottenere limitandoti a descriverlo a CdC.
 
 
[1] 
http://www.catb.org/esr/faqs/smart-questions.html
 
[2] 
http://sscce.org
 
 
-- 
Andrea
 

 intendevi ottenere limitandoti a descriverlo a CdC.
 
"c'è un modo per separare i nomi di file (abc.txt, 2.txt) dalle opzioni 
(-m, --long-val, -x) ?"
 
...non mi sembra di essere stato così poco chiaro, e cmq in caso di 
dubbi basta chiedere...
 

 
 
Mi spiace tu l'abbia presa in questo modo, non volevo assolutamente fare il
provocatore o il superiore o chissà come t'immagini "il modo in cui l'ho
detto".
 
Se pensi che non abbia capito le tue necessità spiegati meglio o semplicemente
ignora la mia risposta e basta.
 
Ciao!

 ignora la mia risposta e basta.
 
Beh penso che ormai hai capito ciò che volevo sapere; cmq bene, così si 
fa :-P

 
 
Però converrai come me che questo è un po' un controsenso, no?
Chi chiede ha la responsabilità di spiegarsi bene, non chi risponde di
domandare finché non capisce. Altrimenti tutti i thread sarebbero "aiuto! chi
mi da una mano?" :D
 
Anche perché, almeno personalmente, se una risposta non la so o non capisco
la domanda non è che chiedo, non scrivo proprio: seguo qualche altro thread
che ritengo più interessante; di cose da fare ce ne abbiamo tutti troppe
per seguire tutte le domande su tutti gli NG che leggiamo, almeno io.
 
Ciao!

 per seguire tutte le domande su tutti gli NG che leggiamo, almeno io.
 
ah non lo dire a me :)
 

 Chiedete, chiedete, […] chiedete e vi sarà dato.
 
Giusto per curiosità: la pagina di ESR che ho indicato l'hai letta?
 
 
-- 
Andrea
 


 
ho dato uno sguardo (il mio tempo è poco), e cmq se ho avuto un po' di 
scortesia me ne scuso.
E ad ogni modo siccome non ho tempo per continuare questa discussione, 
ribadisco che se si vogliono chiarimenti... basta semplicemente... Avete 
capito!!!
Tempo scaduto :-P

 E cosa bisogna fare in questi casi?
 
In questi casi tu prendi il manuale di getopt, fai qualche esperimento e 
poi scrivi:
 
Ciao,
grazie per la risposta, ma getopt non fa quello che voglio perché io 
voglio X, Y e Z e getopt fa A, B, e C. Ci sono altre soluzioni?
 
 
Come vedi, sei TU che dici cosa vuoi, non gli altri che cercano di 
indovinarlo.
 
Bye.

 indovinarlo.
 
"Però volevo sapere se c'è un modo per separare i nomi di file (abc.txt, 
2.txt) dalle opzioni (-m, --long-val, -x) ?
Cioè esiste una funzione già pronta, o me la devo scrivere?"
 
In effetti però dovevo anche aggiungere:
 
"Ho già provato con getopt(), ma non fa quello che voglio"
 
E su questo hai ragione, e cmq in questi casi basta poco per rimediare...