2009-06-02 313 views
2

我想从键盘输入控制与PHP的东西。我目前检测击键的方式是:键盘输入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作为网页,而不是命令行。

+0

您是否使用PHP作为Web脚本语言或仅从命令行?我很困惑... – 2009-06-02 20:32:30

+0

你在本地做这个吗?你期望这可以在网页上或仅通过CLI工作吗? – Kekoa 2009-06-02 20:33:01

+6

为了将来的参考,如果你想写一个CLI脚本:fopen(“/ dev/stdin”,“r”)是非常依赖于平台的,PHP已经提供了一个常量STDIN用于fread /与fgets。例如,fgets(STDIN) – grawity 2009-06-02 21:05:43

回答

5

我假设你使用PHP作为一个Web脚本语言(不是在命令行)...

从我所看到的东西,你会希望使用上的JavaScript客户端读取关键输入。一旦服务器将页面交付给客户端,就没有PHP交互。因此,使用AJAX读取客户端密钥输入并将呼叫回传给服务器是最好的选择。

还有一些Javascript的信息和检测按键here和一些关于如何使用AJAX的信息here

jQuery的一个整洁的选择是使用类似delayedObserver

4

如果你正在编写一个CLI应用程序(而不是Web应用程序),你可以使用ncurses' getch()函数来获得单个关键笔划。祝你好运!

如果你没有编写CLI应用程序,我会建议遵循Andrew的答案。