Título: No funciona un programa con "$name = trim(fgets(STDIN))" Publicado por: Linton en 26 Noviembre 2013, 17:14 pm Estoy con un manual de PHP y me encuentro este sencillo programa:
Código
Se supone que solicita el nombre del usuario y responde con un mensaje de bienvenida. Lo he probado, y aparece esto: Hello there. So I hear you're learning to be a PHP programmer! Why don't you type in your name for me: Notice: Use of undefined constant STDIN - assumed 'STDIN' in C:\xampp\htdocs\htdocs\php28\index.php on line 5 Warning: fgets() expects parameter 1 to be resource, string given in C:\xampp\htdocs\htdocs\php28\index.php on line 5 Thanks, , it's really nice to meet you. ¿Dónde está el fallo? Gracias, un saludo. Título: Re: No funciona un programa con "$name = trim(fgets(STDIN))" Publicado por: Vaagish en 26 Noviembre 2013, 17:20 pm Citar $name = trim(fgets(STDIN)); Bueno, nunca use fgets en PHP, pero tiene que esta mal. Si te fijas la ayuda que da la pagina de PHP acerca de fgets dice: Citar string fgets ( resource $handle [, int $length ] ) Obtiene una línea desde el puntero al fichero. No veo tu handle, ni el argumento opcional lenght.. le estas pasando como argumento a la función un string, "STDIN", eso no es un handle.. PD: El handle es una variable, que "apunta" a un archivo abierto previamente.. Saludos! Título: Re: No funciona un programa con "$name = trim(fgets(STDIN))" Publicado por: Saberuneko en 26 Noviembre 2013, 17:25 pm Necesitas utilizar php://stdin
Código Fuentes: http://stackoverflow.com/questions/2929629/how-do-i-write-a-command-line-interactive-php-script http://php.net/manual/es/features.commandline.io-streams.php Título: Re: No funciona un programa con "$name = trim(fgets(STDIN))" Publicado por: Vaagish en 26 Noviembre 2013, 17:29 pm Mmm.. pero ahí también dice:
Código: $line = trim(fgets(STDIN)); // lee una línea de STDIN Veo que lo que yo decía, no esta bien del todo.. proba: Flujo abierto a stdin. Ahorra tener que abrirlo con Código: <?php Título: Re: No funciona un programa con "$name = trim(fgets(STDIN))" Publicado por: Linton en 26 Noviembre 2013, 17:35 pm Uf no he entendido casi nada, estoy muy verde en PHP :-( ¡Gracias de todas formas, un saludo!
Título: Re: No funciona un programa con "$name = trim(fgets(STDIN))" Publicado por: dRak0 en 27 Noviembre 2013, 08:21 am Segun lo q lei qdaria
<?php $stdin = fopen('php://stdin', 'r'); echo trim(fgets($stdin)); ?> |