2009-10-07 64 views
1

我正在为IMified网络编写一个bot。根据表达式和列表过滤值

我想过滤由我的机器人处理的项目只接受某些值到我的脚本。

这是我现在使用什么:

$items = array('botkey', 'userkey', 'network', 'user', 'channel', 'msg', 'step'); 

foreach ($_POST as $key => $value) 
{ 
    if (in_array($key, $items) || preg_match('value\d*', $key)) 
    { 
     $this->data[$key] = $value; 
    } 
} 
  1. 有没有办法做到这一点更好?
  2. 为什么我的正则表达式不起作用 - 它只允许名为value1234或类似的任何键(“值”+数字),但它不会让通过任何东西。

回答

2
  1. 总有一个更好的方式,但是 - 只要你在代码中加入了一些污点/健全性检查,你就可以做得很好。

  2. 您的正则表达式语法错误。尝试: preg_match('/^value\d+$/', $key)

+0

+1几乎正是我输入的内容。 – timdev 2009-10-07 01:17:55

+0

太棒了,非常感谢。 – 2009-10-09 15:24:09

1

我想应该是的preg_match( '/值\ d * /',$键)

我认为是一个很好的方法来给定的问题