$rules) { // top level if (is_array($rules)) { $ar = []; foreach ($rules as $rule) { if (is_string($rule) && strpos($rule, '|') !== false) { foreach (explode('|', $rule) as $rr) { $ar[] = $rr; } } else if (is_array($rule)) { // nested array, assume no further recursion foreach ($rule as $rr) { $ar[] = $rr; } } else { // Rule $ar[] = $rule; } } $result[$key] = $ar; } else { // string or Rule $result[$key] = $rules; } } return $result; }