除了get或post方法之外,如何在php中获取用户输入

时间:2014-04-20 20:43:20

标签: php input

我正在尝试为fizz buzz游戏编写代码......我完成了它...但问题是我需要从用户那里获取输入,我的代码仅适用于我在代码...任何人都可以指定任何方式,我可以从用户输入... post方法没有工作.. 我的代码如下......

<html>
    <body>
        <form method="post">
            enter Value of A 
            <input type="text" name="A">
            enter value of B
            <input type="text" name="B">
            enter value of N
            <input value="text" name="N">       
        </form>
    </body>
</html>

<?php
    $N=$_POST["N"];
    $A=$_POST["A"];
    $B=$_POST["B"];

    while($N!=100) {   
        if($N%$A==0 & $N%$B==0) {
            echo"FizzBuzz\n";
        }
        elseif ($N%$A==0) {
            echo"Fizz\n";         
        }
        elseif ($N%$B==0) {
            echo"buzz\n";
        }     
        else
            echo"$N \n";

        $N=$N+1;
    }        
?>

1 个答案:

答案 0 :(得分:1)

OP明确表示它应该看起来像一个从文件中获取输入的控制台应用程序,我可以准备的答案有几个:

首先,不需要HTML,因为没有真正的用户会打开Web浏览器,因为一切都将从CLI发生,并且没有输入,只有文件。

要将文件作为输入,您可能需要fgets()。该文件可以从标准输入发送,因此fgets(STDIN)将完成工作。但是,这实际上取决于文件的格式化方式。

在一个理想的情况下,我有文件test.txt,每个文件都有不同的行:

50
100
200

要使用test.txt作为标准输入,您可能需要:

<?php
$input = explode("\r\n",stream_get_line(STDIN, 1024));
//Explode the news lines as array, to assign then as N, A and B



    $N=$input[2];
    $A=$input[0];
    $B=$input[1];

    while($N!=100) {   
        if($N%$A==0 & $N%$B==0) {
            echo"FizzBuzz\n";
        }
        elseif ($N%$A==0) {
            echo"Fizz\n";         
        }
        elseif ($N%$B==0) {
            echo"buzz\n";
        }     
        else
            echo"$N \n";

        $N=$N+1;
    }        
?>

现在您从控制台运行脚本

$ php path/to/file/file.php < path/to/input/test.txt

当然,你可以在打开文件等待输入的时候进行成本计算,这可以是文件名

$stdin = fgets(STDIN);然后$ php path/to/file/file.php将等待输入内容。

如果它是有效的文件名,您可以使用file_get_contents($stdin);

或者,您可以使用CLI模式$argv数组中的命令行参数:

$file = file_get_contents(__DIR__.DIRECTORY_SEPARATOR.$argv[1]);
$input = explode("\r\n", $file);

这将打开文件,在PHP文件的目录中以给定名称作为第一个参数

$ php path/to/file/file.php test.txt