Beispiel #1
0
 public static function get_directive_data($directive_code)
 {
     $directive_name = self::get_directive_name($directive_code);
     $directive_data = array('directive_name' => $directive_name);
     if (DirectiveFactory::is_nested_directive($directive_name)) {
         $directive_data = array_merge($directive_data, self::get_nested_directive_data($directive_code, $directive_name));
     } else {
         $directive_data['directive_parameters'] = self::get_simple_directive_parameters($directive_code);
     }
     return $directive_data;
 }
Beispiel #2
0
 private function process_nested_directives($output)
 {
     $startpos = strpos($output, DirectiveParser::DIRECTIVE_START);
     while ($startpos > -1) {
         $endpos = strpos($output, DirectiveParser::DIRECTIVE_END, $startpos);
         $length = $endpos - $startpos + 3;
         $raw_directive = substr($output, $startpos, $length);
         $directive_name = DirectiveParser::get_directive_name($raw_directive);
         if (DirectiveFactory::is_nested_directive($directive_name)) {
             $end_tag = DirectiveParser::DIRECTIVE_START . '/' . $directive_name . DirectiveParser::DIRECTIVE_END;
             $endpos = strpos($output, $end_tag);
             $length = $endpos - $startpos + strlen($end_tag);
             $raw_directive = substr($output, $startpos, $length);
             $replace = $this->process_directive($raw_directive, $output);
             $endpos = $startpos + strlen($replace);
             $output = substr_replace($output, $replace, $startpos, $length);
         }
         $startpos = strpos($output, DirectiveParser::DIRECTIVE_START, $endpos);
         // next occurence
     }
     return $output;
 }