Es posible obtener información de un usuario usando php cli y luego volcar la entrada en una variable y, a continuación, el guión va por delante.

Igual que el c++ cin función ?

Es posible que si sí, entonces ¿cómo ?
Tal vez no sólo de php, pero quizás con algunos comandos de linux ?

Gracias

InformationsquelleAutor kritya | 2011-07-01

3 Comentarios

  1. 70

    Un vistazo a este manual de PHP de la página
    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";
    ?>
    • Funciona pero el mejor enfoque ?
    • como ofc leer ese archivo va a hacer el programa, whatslower
    • pero si esta es la única manera que se me parecen mucho ur respuesta 😛
    • Así PHP fue diseñado para la Web, me imagino que su soporte para línea de comandos cosas es un parche a la mejor. Algo así como Python es un mejor ajuste para la escritura de la línea de comandos cosas.
    • y si quiero múltiples entradas, a continuación, ¿qué tengo que hacer con esto ?
    • tengo que repetir una y otra vez
    • Mi único consejo, si usted elige este método sería el uso de la STDIN constante en lugar de «php://stdin», como se recomienda en el PHP contenedores de documentación.
    • Escribir una función que obtiene la entrada y la reutilización de su función.

  2. 86

    Usted puede simplemente hacer:

    $line = fgets(STDIN);

    para leer una línea de la entrada estándar en php CLI modo.

    • cómo leer a más de 1 entradas de ello ?
    • Simplemente añade otra línea como esta: $line2 = fgets(STDIN);
    • Y si quieres leer en un bucle hasta EF, a continuación, utilizar while (FALSE !== ($line = fgets(STDIN))) { echo "line=$line"; }
    • un poco de código por favor, por el bucle de uno ? Gracias
    • STDIN no es siempre definido de manera que el aceptado respuesta es mejor.
    • En el código fuente del NÚCLEO de php > 5.3.6 se define como: define('STDIN', fopen('php://stdin', 'r')); define('STDOUT', fopen('php://stdout', 'w')); define('STDERR', fopen('php://stderr', 'w'));

  3. 5

    En este ejemplo estoy extendiendo Devjar del ejemplo. Los créditos para él, por ejemplo de código. El último ejemplo de código es más simple y más segura en mi opinión.

    Cuando utilice su 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 stdin modo no es binario-segura. Usted debe agregar una «b» a su modo y utilizar 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 max cartas. Este es mi ejemplo personal. Yo voy a sugerir a utilizar esto como su código. Se recomienda también utilizar directamente STDIN de «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";
    ?>

Dejar respuesta

Please enter your comment!
Please enter your name here