Esempio n. 1
0
 function emojifyHTML($text)
 {
     $elementsOpen = array();
     $elementsDepth = 0;
     while (true) {
         $elementFound = preg_match("/<\\s*?([\\/!]?\\w*)(.*?)\\s*?\\>/s", $text, $matches, PREG_OFFSET_CAPTURE, $offsetBytes);
         $element = $matches[0][0];
         $elementName = $matches[1][0];
         $elementText = $matches[2][0];
         $elementOffsetBytes = $elementFound ? $matches[0][1] : strlenb($text);
         $string = substrb($text, $offsetBytes, $elementOffsetBytes - $offsetBytes);
         if ($elementsDepth == 0) {
             $string = $this->emojifyText($string);
         }
         $output .= $string;
         if (!$elementFound) {
             break;
         }
         if (!empty($elementName) && substru($elementText, -1) != '/' && !preg_match("/^(area|br|col|hr|img|input|col|param|!)/i", $elementName)) {
             if ($elementName[0] != '/') {
                 $elementsDepth += $this->isFixedElement($elementName);
                 array_push($elementsOpen, $elementName);
             } else {
                 $elementsDepth -= $this->isFixedElement($elementsOpen[count($elementsOpen) - 1]);
                 array_pop($elementsOpen);
             }
         }
         $output .= $element;
         $offsetBytes = $elementOffsetBytes + strlenb($element);
     }
     return $output;
 }
Esempio n. 2
0
 function detectImageInfo($fileName)
 {
     $width = $height = 0;
     $type = "";
     $fileHandle = @fopen($fileName, "rb");
     if ($fileHandle) {
         if (substru(strtoloweru($fileName), -3) == "png") {
             $dataSignature = fread($fileHandle, 8);
             $dataHeader = fread($fileHandle, 16);
             if (!feof($fileHandle) && $dataSignature == "‰PNG\r\n\n") {
                 $width = (ord($dataHeader[10]) << 8) + ord($dataHeader[11]);
                 $height = (ord($dataHeader[14]) << 8) + ord($dataHeader[15]);
                 $type = "png";
             }
         } else {
             if (substru(strtoloweru($fileName), -3) == "jpg") {
                 $dataBufferSizeMax = filesize($fileName);
                 $dataBufferSize = min($dataBufferSizeMax, 4096);
                 $dataBuffer = fread($fileHandle, $dataBufferSize);
                 $dataSignature = substrb($dataBuffer, 0, 4);
                 if (!feof($fileHandle) && ($dataSignature == "ÿØÿà" || $dataSignature == "ÿØÿá")) {
                     for ($pos = 2; $pos + 8 < $dataBufferSize; $pos += $length) {
                         if ($dataBuffer[$pos] != "ÿ") {
                             break;
                         }
                         if ($dataBuffer[$pos + 1] == "À" || $dataBuffer[$pos + 1] == "Â") {
                             $width = (ord($dataBuffer[$pos + 7]) << 8) + ord($dataBuffer[$pos + 8]);
                             $height = (ord($dataBuffer[$pos + 5]) << 8) + ord($dataBuffer[$pos + 6]);
                             $type = "jpg";
                             break;
                         }
                         $length = (ord($dataBuffer[$pos + 2]) << 8) + ord($dataBuffer[$pos + 3]) + 2;
                         while ($pos + $length + 8 >= $dataBufferSize) {
                             if ($dataBufferSize == $dataBufferSizeMax) {
                                 break;
                             }
                             $dataBufferDiff = min($dataBufferSizeMax, $dataBufferSize * 2) - $dataBufferSize;
                             $dataBufferSize += $dataBufferDiff;
                             $dataBuffer .= fread($fileHandle, $dataBufferDiff);
                             if (feof($fileHandle)) {
                                 $dataBufferSize = 0;
                                 break;
                             }
                         }
                     }
                 }
             }
         }
         fclose($fileHandle);
     }
     return array($width, $height, $type);
 }