【问题标题】:How to parse a command line type instruction with PHP?如何用 PHP 解析命令行类型指令?
【发布时间】:2014-03-05 06:23:25
【问题描述】:

我有一个基于文本的游戏的想法,我可以将命令和参数传递给 php,让它决定下一步如何处理玩家。

我会在 AJAX 表单中输入“向北”或更复杂的内容,例如“使用钥匙门”,这会将命令发送到 php 脚本,并且我希望 php 脚本知道它正在使用什么操作,例如“使用”以及第一个和第二个参数“key”和“door”并决定下一步做什么,但我不知道该怎么做。

请注意,我不想从命令行运行它,而是从基于 Web 的界面运行。

【问题讨论】:

    标签: php regex command-line-arguments


    【解决方案1】:

    假设 AJAX 表单将向/game.php?do=use+key+door发送请求...

    然后在game.php中你可以:

    $do = $_GET['do'];
    list($action, $object) = split(' ', $do, 2);
    // $action == 'use'
    // $object == 'key door'
    

    您可以查看a code and output example here

    (如果您选择在 POST 中实现表单,$_POST['do'] 也是如此。)

    【讨论】:

    • 这正是我想要的!非常感谢,我不知道会这么简单:D
    【解决方案2】:

    在我看来,如果您使用 ajax,您将使用 getpost,因此在您的 php 脚本中您只需检查 $_GET$_POST

    【讨论】:

      【解决方案3】:

      您可以从一个请求(文本区域、输入)中获取整个参数字符串。您可以从_GET_POST 获取此信息。至于如何处理信息,你必须构建一个解析器。它的复杂性取决于你。您可以做的更简单的事情之一是通过空格将请求拆分为令牌(您会得到“go”、“north”或“use”、“key”、“door”)。检查您的关键字列表以将操作添加到堆栈(去、使用)并将参与者和被执行者添加到堆栈(钥匙、门、北)。扔掉不必要的词(on、a、the 等)。然后遍历堆栈。如果你得到“使用”,你期望后面有两个参数(演员和被代理人,例如使用门上的钥匙)。如果您缺少此信息,或者它是无意义的(使用 foon 上的 blorb),请告诉用户该命令无效。给他们一个常用命令的列表。您可能还想为某些对象和拼写错误留出一点余地。您还可以阅读有关词法解析器的更多信息,以更好地了解如何以更复杂的方式执行此操作。

      【讨论】:

      • 感谢您的帮助,我会将其添加到其中,因为这是一个非常好的主意。每个人都讨厌拼写错误:D
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-18
      • 2010-11-27
      • 1970-01-01
      • 2011-04-27
      • 2012-06-26
      • 1970-01-01
      相关资源
      最近更新 更多