¿Cómo leer la entrada del usuario o de la consola en PHP?

En PHP, la consola es una interfaz de línea de comandos, que también se denomina shell interactivo . Podemos acceder a él escribiendo el siguiente comando en una terminal: 

php -a

Si escribimos cualquier código PHP en el shell y presionamos enter, se ejecuta directamente y muestra la salida o muestra los mensajes de error en caso de cualquier error. Una ejecución de muestra de un código PHP, que lee la entrada de la consola de PHP, se ve así: 
 

En este artículo, discutiremos dos métodos para leer la consola o la entrada del usuario en PHP: 
Método 1: Usar la función readline() es una función integrada en PHP. Esta función se utiliza para leer la entrada de la consola. 
Las siguientes cosas se pueden lograr con la función readline()
 

  • Acepte una sola entrada solicitando al usuario:

PHP

<?php
 
// For input
// Hello World
$a = readline('Enter a string: ');
 
// For output
echo $a;   
?>

Producción: 

Enter a string: GeeksforGeeks
GeeksforGeeks
  • De forma predeterminada, el tipo de datos de la variable aceptada a través de la función readline() es string . Entonces, para cualquier otro tipo de datos, debemos encasillarlo explícitamente como se describe a continuación.

PHP

<?php
  
// Input section
// $a = 10
$a = (int)readline('Enter an integer: ');
 
// $b = 9.78
$b = (float)readline('Enter a floating'
            . ' point number: ');
 
// Entered integer is 10 and
// entered float is 9.78
echo "Entered integer is " . $a
    . " and entered float is " . $b;
?>

Producción: 

Enter an integer: 10
Enter a floating point number: 9.78
Entered integer is 10 and entered float is 9.78
  • Podemos lograr las mismas cosas sin preguntarle al usuario también: 
$a = readline();
  • En este caso, tan pronto como el usuario presiona enter , el valor ingresado se almacena en la variable a .
  • Aceptar múltiples entradas separadas por espacios: para esto, usamos otra función explotar() junto con readline() . El primer argumento de explotar() es el delimitador que queremos usar. En el siguiente ejemplo, el delimitador es space . El segundo argumento es la función readline() . Aquí también el tipo de datos de $var1 y $var2 será una string. Así que tenemos que encasillarlos por separado para otros tipos de datos. En el ejemplo anterior, el encasillamiento se muestra para números enteros. 

PHP

<?php
  
// Input 10 20
list($var1, $var2)
        = explode(' ', readline());
  
// Typecasting to integers
$var1 = (int)$var1;
$var2 = (int)$var2;
  
// Printing the sum of var1 and var2.
// The sum of 10 and 20 is 30
echo "The sum of " . $var1 . " and "
    . $var2 . " is " . ($var1 + $var2);
?>

Salida:
La suma de 10 y 20 es 30
 

  • También podemos leer una array a través de explotar(): 

PHP

<?php
  
// For input
// 1 2 3 4 5 6
$arr = explode(' ', readline());
 
// For output
print_r($arr);
 
/*Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
    [5] => 6
)*/
  
?>

Producción: 

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
    [5] => 6
)

Método 2: Usar la función fscanf() funciona igual que la función fscanf() en C. Podemos leer 2 enteros del teclado (STDIN) como se muestra a continuación: 

  • Este es diferente al método anterior. 

PHP

<?php
 
// Input 1 5
fscanf(STDIN, "%d %d", $a, $b);
  
// Output
// The sum of 1 and 5 is 6
echo "The sum of " . $a . " and "
    . $b . " is " . ($a + $b);
?>

Producción: 

The sum of 1 and 5 is 6

Comparación entre dos métodos: 

  • No es necesario utilizar el encasillamiento de tipos explícito para la función fscanf() , porque lo hacen los especificadores de formato, por ejemplo, %d , %f , %c , etc. Puede leer más sobre los especificadores de formato .
  • La función fscanf() es mucho más rápida que la función readline().

PHP es un lenguaje de secuencias de comandos del lado del servidor diseñado específicamente para el desarrollo web. Puede aprender PHP desde cero siguiendo este tutorial de PHP y ejemplos de PHP .

Publicación traducida automáticamente

Artículo escrito por cavi4762 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *