【问题标题】:How do I prompt for input using PHP-CLI and have the input available as a variable?如何使用 PHP-CLI 提示输入并将输入作为变量提供?
【发布时间】:2014-12-01 11:20:19
【问题描述】:

我正在寻找一个小型 PHP-CLI 工具,它会告诉我输入的日期是否是周末。我目前有以下脚本,可以实现其中的一些目标:

<?php
function isWeekend($date) {
return (date('N', strtotime($date)) >= 6);
}
var_dump(isWeekend('2014-10-29')); 
?>

它目前运行良好(输出真或假),但每次我想测试日期时都必须更新源。如果我可以提示输入日期(用户输入),然后使用该输入来计算日期会更容易,最好不使用 HTML 元素,因为我目前正在通过 CLI 运行脚本。

还有其他人成功实现了我的目标吗?我不需要验证,因为它是一个只有我会使用的工具,并且每次使用它时我都会确保使用正确的日期结构。

【问题讨论】:

  • 为什么每次都需要更新源代码?这个函数在我看来是可重用的。
  • 您发布的问题问错了问题。您的问题是“如何使用 PHP-CLI 提示输入并将输入作为变量提供?”
  • 感谢您的意见。发现很难弄清楚要问什么,但你的建议是完美的。赞赏!

标签: php datetime input command-line-interface


【解决方案1】:

你可以试试:

<?php
fwrite(STDOUT, "Enter the date\n");
$date = fgets(STDIN);      
$isWeekend = (date('N', strtotime($date)) >= 6);
fwrite(STDOUT, "Response: $isWeekend");  
exit(0); 
?>

这就是我得到的:

C:\xampp\php>php test.php
Enter the date
2014-11-30
Response: 1
C:\xampp\php>php test.php
Enter the date
2014-12-01
Response:
C:\xampp\php>

【讨论】:

  • 这看起来又好又简单,这绝对是我想要的。但是,除了输入的日期之外,我似乎没有得到任何输入。确认一下,日期格式是:YYYY-MM-DD?
  • 使用您提供的代码和正确的日期格式时,我在 CLI 中得到的唯一响应是:响应:未提供其他输出。
  • 我在答案中添加了我得到的内容。
  • 非常感谢!看来我已经隐藏了回显的“1”的控制台字体。我在 fwrite 语句中添加了一个换行符,现在响应出现在它自己的行上。
  • 你也可以试试这个(就像 Andrew 建议的那样):&lt;?php $isWeekend = (date('N', strtotime($argv[1])) &gt;= 6); fwrite(STDOUT, "Response: $isWeekend"); exit(0); ?&gt; 并运行:C:\xampp\php>php test.php 2014-11-30
【解决方案2】:

从命令 propmpt 运行时

php scriptname.php 2014-10-29 secondarg

用户输入将包含在

$argv[1]

$argv[2] //secondarg etc

当然,

strtotime($argv[1]);

失败时返回 false

【讨论】:

  • register_argc_argv 默认为Off,所以我建议使用$_SERVER['argv']
猜你喜欢
  • 1970-01-01
  • 2021-06-14
  • 1970-01-01
  • 1970-01-01
  • 2021-11-23
  • 1970-01-01
  • 1970-01-01
  • 2016-01-23
  • 1970-01-01
相关资源
最近更新 更多