Non so voi quanto lo avete pensato ma io si, e non trovando nelle api, forse perchè non c'è proprio, la soluzione, me la sono scritta pensando un po' in C-ese.
Mi sa che già altri hanno trovato questa soluzione quindi se su internet trovate un articolo simile non mi spammate i commenti di: "Brutto copiaincoller che non sei altro!!!"
Su Gnu/Linux esiste un file che si chiama STDIN che prende l'input da linea di comando. Già in C quando ci si metteva in lettura su questo file il programma si interrompeva e aspettava che l'utente inserisse una linea chiudendo con un invio ("\n").
Perchè non riprodurre questa procedura anche su PHP?
Il php non ha la define STDIN ma mette a disposizione il seguente path: "php://stdin". Una gran comodità.
Quindi apriamo il nostro editor di fiducia e inseriamo il seguente script nei tag appropriati:
$f = fopen("php://stdin","R");
echo 'Inserire qui la stringa >>> ';
$string = fread($f,255);
echo 'Stringa passata: '.$string."\n";
Avendo questo risultato:
La funzione fread bloccherà lo script fino a chè l'utente non digiterà invio, dopo di che verranno presi, in questo caso, i primi 255 caratteri (byte) della stringa. Ovviamente il numero di caratteri da prendere sono a discrezione di chi scrive lo script, ma evitiamo di prendere input troppo lunghi quando non occorre.
Fatto questo aprite la shell e digitate:
$php mio_script_di_prova.php
e ammirate come aspetta diligentemente che voi inseriate una stringa.
La tipizzazione debole del php vi consente inoltre di poter trasformare con semplicità l'input in intero o float da poter elaborare successivamente.
Spero di essere stato d'aiuto a chi come me cercava di prendere input banalmente da tastiera su shell.
Alla prossima ;)
Nessun commento:
Posta un commento