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; }
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); }