2011-07-01 8 views

Respuesta

58

Eche un vistazo a esta página manual de PHP http://php.net/manual/en/features.commandline.php

en particular

<?php 
echo "Are you sure you want to do this? Type 'yes' to continue: "; 
$handle = fopen ("php://stdin","r"); 
$line = fgets($handle); 
if(trim($line) != 'yes'){ 
    echo "ABORTING!\n"; 
    exit; 
} 
echo "\n"; 
echo "Thank you, continuing...\n"; 
?> 
+0

¿Funciona pero un enfoque mejor? – kritya

+0

como ofc leer ese archivo hará que el programa sea un poco más bajo – kritya

+0

pero si esta es la única forma en que me gusta su respuesta: P – kritya

72

Simplemente puede hacer:

$line = fgets(STDIN); 

para leer una línea de la norma entrada en el modo php CLI.

+0

cómo leer más de 1 entrada de ella? – kritya

+1

Simplemente agregue otra línea como esta: '$ line2 = fgets (STDIN);' – anubhava

+2

Y si quiere leer en un bucle hasta EOF, use 'while (FALSE! == ($ line = fgets (STDIN))) { echo "line = $ line"; } ' – anubhava

2

En este ejemplo estoy ampliando el ejemplo de Devjar. Créditos para él, por ejemplo, código. El último ejemplo de código es el más simple y el más seguro en mi opinión.

Cuando se utiliza el código:

<?php 
echo "Are you sure you want to do this? Type 'yes' to continue: "; 
$handle = fopen ("php://stdin","r"); 
$line = fgets($handle); 
if(trim($line) != 'yes'){ 
echo "ABORTING!\n"; 
exit; 
} 
echo "\n"; 
echo "Thank you, continuing...\n"; 
?> 

Debe tener en cuenta el modo de entrada estándar no es binario seguro. Debe agregar "b" a su modo y usar el siguiente código:

<?php 
echo "Are you sure you want to do this? Type 'yes' to continue: "; 
$handle = fopen ("php://stdin","rb"); // <-- Add "b" Here for Binary-Safe 
$line = fgets($handle); 
if(trim($line) != 'yes'){ 
echo "ABORTING!\n"; 
exit; 
} 
echo "\n"; 
echo "Thank you, continuing...\n"; 
?> 

También puede establecer cartas máximas. Este es mi ejemplo personal. Sugeriré usar esto como tu código. También se recomienda utilizar directamente STDIN que "php: // stdin".

<?php 
/* Define STDIN in case if it is not already defined by PHP for some reason */ 
if(!defined("STDIN")) { 
define("STDIN", fopen('php://stdin','rb')) 
} 

echo "Hello! What is your name (enter below):\n"; 
$strName = fread(STDIN, 80); // Read up to 80 characters or a newline 
echo 'Hello ' , $strName , "\n"; 
?> 
Cuestiones relacionadas