public static function Parse($text, array $options = NULL) { $valid_options = ['root_url' => ['validate' => 'is_string', 'default' => NULL], 'image_callback' => ['validate' => 'is_callable', 'default' => NULL], 'link_callback' => ['validate' => 'is_callable', 'default' => NULL], 'code_formatting' => ['validate' => 'is_bool', 'default' => false], 'header_level' => ['validate' => 'is_int', 'default' => 1]]; $options_filtered = []; foreach ($valid_options as $option_name => $option_rules) { $value = isset($option_rules['default']) ? $option_rules['default'] : NULL; if ($options && isset($options[$option_name])) { $candidate = $options[$option_name]; if (!isset($option_rules['validate']) || $option_rules['validate']($candidate)) { if (isset($option_rules['transform'])) { $candidate = $option_rules['transform']($candidate); } $value = $candidate; } } $options_filtered[$option_name] = $value; } $parser = new self($text, $options_filtered); return $parser->Evaluate(); }