コード例 #1
0
ファイル: asset.php プロジェクト: mrdeadmouse/u136006
 /**
  *
  * Returns positions of <script>...</script> elements
  * @param $content
  * @return array
  */
 private function getScriptAreas($content)
 {
     $openTag = "<script";
     $closingTag = "</script";
     $ending = ">";
     $offset = 0;
     $areas = array();
     while (($openTagStart = String::getBinaryStripos($content, $openTag, $offset)) !== false) {
         $endingPos = String::getBinaryStrpos($content, $ending, $openTagStart);
         if ($endingPos === false) {
             break;
         }
         $attrsStart = $openTagStart + strlen($openTag);
         $attrs = String::getBinarySubstring($content, $attrsStart, $endingPos - $attrsStart);
         $openTagEnd = $endingPos + strlen($ending);
         $realClosingTag = $closingTag . $ending;
         $closingTagStart = String::getBinaryStripos($content, $realClosingTag, $openTagEnd);
         if ($closingTagStart === false) {
             $offset = $openTagEnd;
             continue;
         }
         $closingTagEnd = $closingTagStart + strlen($realClosingTag);
         while (isset($content[$closingTagEnd]) && $content[$closingTagEnd] === "\n") {
             $closingTagEnd++;
         }
         $area = new \stdClass();
         $area->attrs = $attrs;
         $area->openTagStart = $openTagStart;
         $area->openTagEnd = $openTagEnd;
         $area->closingTagStart = $closingTagStart;
         $area->closingTagEnd = $closingTagEnd;
         $areas[] = $area;
         $offset = $closingTagEnd;
     }
     return $areas;
 }