从用户输入解析命令

时间:2009-04-23 15:46:13

标签: parsing user-input

这个问题旨在讨论人们在处理用户输入时的个人意见。

我正在处理的项目的这一部分以类似于IRC聊天的方式处理用户输入。例如,有用于聊天,执行动作等的设置命令等等。

现在,我有几个选项可供选择来解析此输入。我可以使用正则表达式,我可以直接解析它(即一个包含所有支持命令的大型switch语句,只需检查用户输入中的前x个字符),或者甚至可以疯狂添加类似于Flex的解析器/野牛实施。我正在考虑的另一个选项是在XML文件中定义所有命令,以将它们与代码实现分开。

那么,社区的想法是什么?

1 个答案:

答案 0 :(得分:1)

我会选择一个漂亮的混合包。

显然你必须清理输入。确保那里没有令人讨厌的东西,具体取决于输入阻止SQL注入的位置,XSS,CSRF等......

但是当您的输入是干净的时,您可以使用正则表达式捕获预期的命令并获取所有必需的子匹配(命令参数等),然后使用某种调度程序切换语句或类似的。

这里确实没有全部最佳实践,除了始终保持四倍 - 始终确保用户输入已经过消毒。除此之外,请选择最适合您案例的内容。

显然有些人说如果你遇到问题并且你正在考虑使用reg exps来解决这个问题,那么你有两个问题,但是谨慎使用,它们是有史以来最好的。请记住,正则表达式怪物可以非常快速地读取非常差的可读性。