我正在尝试在PHP中实现一个过滤器函数。我的二维输入数组看起来像下面这样:
name(string) age(integer) reg_date(date)
----------------------------------------------
John 22 12/03/2015
Anne 23 14/04/2015
Marry 24 01/02/2015
Tim 55 13/03/2015
我需要的是一个过滤器,可以像下面这样将逻辑表达式应用于输入源(自己起草):
{name:'age' type:'integer', operator:'==', value:'23'} OR {name:'age' type:'integer', operator:'==', value:'24'} AND {name:'reg_date' type:'date', operator:'>', value:'12/03/2015', format:'d/m/Y'}
用语言表达:给我所有年龄为23或24岁且注册日期晚于2015年12月3日的条目。
对于每种数据类型(type),应该存在一个过滤器,能够处理特定于数据类型的操作(例如,日期过滤器应该使用格式字段以正确的格式解析日期)。应该很容易添加新的数据类型。
上述表达式的正确输出应为:
name(string) age(integer) reg_date(date)
----------------------------------------------
Anne 23 14/04/2015
我的问题是:我需要自己编写词法分析器来解析逻辑表达式(可能会非常复杂),并应用我自己编写的过滤器,还是已经存在所需的过滤器函数?我尝试将数组解析为XML结构并使用XPath,不幸的是,PHP使用的XPath 1.0不能处理日期格式。我看了一下PHP Filter类中的filter_var,但似乎无法在那里使用逻辑表达式。
strtotime()
将其转换为时间戳?另外,我会像 @borracciaBlu 所说的那样去做。这是数据库的工作。 - Darren