How to read user or console input in PHP ?

In PHP, the console is a command-line interface, which is also called interactive shell. We can access it by typing the following command in a terminal:

php -a

If we type any PHP code in the shell and hit enter, it is executed directly and displays the output or shows the error messages in case of any error. A sample run of a PHP code, that reads input from PHP console looks like this:

In this article, We will discuss two methods for reading console or user input in PHP:

Method 1: Using readline() function is a built-in function in PHP. This function is used to read console input.
The following things can be achieved by readline() function:

  • Accept a single input by prompting the user:
    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

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

    chevron_right

    
    

    Output:



    Enter a string: GeeksforGeeks
    GeeksforGeeks

    By default, the data type of the variable accepted through readline() function is string. So for any other data type, we have to typecast it explicitly as described below.

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    <?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;
    ?>

    chevron_right

    
    

    Output:

    Enter an integer: 10
    Enter a floating point number: 9.78
    Entered integer is 10 and entered float is 9.78
  • We can achieve the same things without prompting the user also:
    $a = readline();

    In this case, as soon as the user hits enter, the entered value is stored in the variable a.

  • Accept multiple space separated inputs: For this, we use another function explode() together with readline(). The first argument of explode() is the delimiter we want to use. In the above example, the delimiter is space. The second argument is the readline() function. Here also the data type of $var1 and $var2 will be string. So we have to separately typecast them for other data types. In the above example, the typecasting is shown for integers.
    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    <?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);
    ?>

    chevron_right

    
    

    Output:
    The sum of 10 and 20 is 30

  • We can also read an array through explode():
    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    <?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
    )*/
       
    ?>

    chevron_right

    
    

    Output:

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

Method 2: Using fscanf() function works same as the fscanf() function in C. We can read 2 integers from Keyboard(STDIN) as below:

  • This is defferent from the previous method
    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    <?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);
    ?>

    chevron_right

    
    

    Output:

    The sum of 1 and 5 is 6

Comparison between two methods:

  • No need to use explicit typecasting for fscanf() function, because it is done by the format specifiers , e.g. %d, %f, %c etc. You can read more about format specifiers.
  • fscanf() function is much faster than the readline() function.



My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.