给出字符串
{A} AND ({B} OR {C} OR ({D} AND {E}))
如何将其解析为可用的数据结构?
我目前有
$tokens = preg_split(
'/( AND | OR |\)|\()/',
$rules[0]['option_rule'],
-1,
PREG_SPLIT_DELIM_CAPTURE
);
foreach ($tokens as $token) {
if (empty($token)) {
continue;
}
$token = trim($token);
$special = ['(', ')', 'AND', 'OR'];
// do something with the token?
}
但不知道如何处理多个级别。
答案 0 :(得分:0)
有些想法可能会起作用,1 = AND,0 = OR
array(
'{A}' => 1,
array(
'{B}' => 0,
'{C}' => 0,
array(
'{D}' => 1,
'{E}' =>
)
)
);
答案 1 :(得分:0)
通用解决方案是指定语法规则并创建可以使用语法处理/解析文本的词法分析器。例如:http://nitschinger.at/Writing-a-simple-lexer-in-PHP