我正在尝试通过键盘输入来控制 PHP 的内容。我目前检测击键的方式是:
function read() {
$fp1=fopen("/dev/stdin", "r");
$input=fgets($fp1, 255);
fclose($fp1);
return $input;
}
print("What is your first name? ");
$first_name = read();
问题在于它没有“实时”读取击键。我不知道使用这种方法是否可行,而且我想这也不是最有效的方法。我的问题是 1)如果这是一个好的方法,那么我怎样才能让它工作,以便当您在页面上键入时,它会捕获击键,以及 2)如果这是一个不好的方法,我怎样才能更好地实现它(也许使用ajax什么的)?
编辑:我使用 PHP 作为网页,而不是命令行。
我假设您使用 PHP 作为网络脚本语言(不是通过命令行)...
据我所知,您需要在客户端使用 Javascript 来读取按键输入。一旦服务器将页面传递给客户端,就不再有 PHP 交互。因此,使用 AJAX 读取客户端按键输入并调用回服务器是正确的方法。
jQuery 的一个巧妙选择是使用类似ncurses 的 getch() 函数来获取单个按键。祝你好运!
如果您不编写 CLI 应用程序,我建议遵循 Andrew 的回答。
mini4work/lib-io。但是,请注意,它目前正在开发中,尚未经过充分测试。
该库利用 PHP FFI 进行低级 C 调用,以便与系统级输入设备(键盘、鼠标等)进行交互,类似于许多 Python 库用于此类目的。