Пример #1
0
 /**
  * 
  * 
  * @param string $tag
  * @param array $nextToken
  */
 public static function optionalTagUntil($tag, $nextToken = array(), $instance)
 {
     $nextTag = strtolower(Fl_Html_Static::getTagName($nextToken['value'], $instance));
     switch ($nextToken['type']) {
         case FL_TOKEN_HTML_TAG_END:
             if ($tag === $nextTag) {
                 return true;
             }
             break;
         case FL_TOKEN_HTML_TAG_START:
             if (isset(Fl_Html_Static::$optionalEndTag[$tag])) {
                 if ($tag === $nextTag) {
                     return true;
                 }
             }
     }
     if (isset(Fl_Html_Static::$optionalEndTagUntil[$tag])) {
         $nextUtilTags = Fl_Html_Static::$optionalEndTagUntil[$tag];
         foreach ($nextUtilTags as $item) {
             if ($nextTag === $item) {
                 return true;
             }
             if ($item === "BLOCK") {
                 $item = Fl_Html_Static::$blockTag;
             } elseif ($item === "NORMAL") {
                 $item = Fl_Html_Static::$optionalEndTagNormalUntil;
             }
             if (is_array($item) && isset($item[$nextTag])) {
                 return true;
             }
         }
     }
     return false;
 }
Пример #2
0
 /**
  * 
  * 获取下一个token
  */
 public function getNextToken()
 {
     $nextToken = $this->tokenInstance->getNextToken();
     if (!$nextToken) {
         return false;
     }
     if ($this->options['compress_tag']) {
         if ($nextToken['type'] === FL_TOKEN_HTML_TAG_START) {
             $result = $this->getInstance("Fl_Html_TagToken", $nextToken['value'])->run();
             $nextToken['tag'] = $result['tag'];
             $nextToken['attrs'] = $result['attrs'];
         } elseif ($nextToken['type'] === FL_TOKEN_HTML_TAG_END) {
             $nextToken['tag'] = Fl_Html_Static::getTagName($nextToken['value'], $this);
         }
     } else {
         if (Fl_Html_Static::isTag($nextToken)) {
             $nextToken['tag'] = Fl_Html_Static::getTagName($nextToken['value'], $this);
         }
     }
     if ($nextToken['tag']) {
         $nextToken['lowerTag'] = strtolower($nextToken['tag']);
     }
     return $nextToken;
 }
Пример #3
0
 /**
  * 
  * special
  */
 public function specialStatement()
 {
     $tag = strtolower(Fl_Html_Static::getTagName($this->currentToken['value'], $this));
     $special = Fl_Html_Static::splitSpecialValue($this->currentToken['value'], $tag, $this);
     $this->currentToken['value'] = $special['tag_start'];
     return array("type" => $this->currentToken['type'], "tag" => $tag, "value" => $this->getValue($this->currentToken), "children" => array(array("type" => FL_TOKEN_HTML_TEXT, "value" => $this->getValue(array_merge($this->currentToken, array("value" => $special["content"]))))));
 }