PHP的cli从用户获得input,然后倾倒入variables可能?

是否有可能从用户使用php cli获得input,然后将input转储到variables,然后脚本继续。

就像c ++ cin函数一样?

那么如果是的话,那又如何呢? 也许不只是PHP,但可能与一些Linux命令?

谢谢

看看这个PHP手册页面http://php.net/manual/en/features.commandline.php

尤其是

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

你可以简单地做:

 $line = fgets(STDIN); 

在php CLI模式下从标准input中读取一行。

在这个例子中,我正在扩展Devjar的例子。 为他例如代码信用。 最后的代码示例在我看来是最简单和最安全的。

当你使用他的代码:

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

你应该注意到stdin模式不是二进制安全的。 你应该添加“b”到你的模式并使用下面的代码:

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

你也可以设置最大章程。 这是我个人的榜样。 我会build议使用这个作为你的代码。 还build议直接使用STDIN而不是“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"; ?>