/** * Compress HTML * * This is a heavy regex-based removal of whitespace, unnecessary comments and * tokens. IE conditional comments are preserved. There are also options to have * STYLE and SCRIPT blocks compressed by callback functions. * * A test suite is available. * * @package Minify * @author Stephen Clay */ namespace LiteSpeed\Lib ; defined( 'WPINC' ) || exit ; class HTML_MIN { /** * @var string */ protected $_html = ''; /** * @var boolean */ protected $_jsCleanComments = true; protected $_skipComments = array(); /** * "Minify" an HTML page * * @param string $html * * @param array $options * * 'cssMinifier' : (optional) callback function to process content of STYLE * elements. * * 'jsMinifier' : (optional) callback function to process content of SCRIPT * elements. Note: the type attribute is ignored. * * 'xhtml' : (optional boolean) should content be treated as XHTML1.0? If * unset, minify will sniff for an XHTML doctype. * * @return string */ public static function minify($html, $options = array()) { $min = new self($html, $options); return $min->process(); } /** * Create a minifier object * * @param string $html * * @param array $options * * 'cssMinifier' : (optional) callback function to process content of STYLE * elements. * * 'jsMinifier' : (optional) callback function to process content of SCRIPT * elements. Note: the type attribute is ignored. * * 'jsCleanComments' : (optional) whether to remove HTML comments beginning and end of script block * * 'xhtml' : (optional boolean) should content be treated as XHTML1.0? If * unset, minify will sniff for an XHTML doctype. */ public function __construct($html, $options = array()) { $this->_html = str_replace("\r\n", "\n", trim($html)); if (isset($options['xhtml'])) { $this->_isXhtml = (bool)$options['xhtml']; } if (isset($options['cssMinifier'])) { $this->_cssMinifier = $options['cssMinifier']; } if (isset($options['jsMinifier'])) { $this->_jsMinifier = $options['jsMinifier']; } if (isset($options['jsCleanComments'])) { $this->_jsCleanComments = (bool)$options['jsCleanComments']; } if (isset($options['skipComments'])) { $this->_skipComments = $options['skipComments']; } } /** * Minify the markeup given in the constructor * * @return string */ public function process() { if ($this->_isXhtml === null) { $this->_isXhtml = (false !== strpos($this->_html, '_replacementHash = 'MINIFYHTML' . md5($_SERVER['REQUEST_TIME']); $this->_placeholders = array(); // replace SCRIPTs (and minify) with placeholders $this->_html = preg_replace_callback( '/(\\s*)]*?>)([\\s\\S]*?)<\\/script>(\\s*)/i' ,array($this, '_removeScriptCB') ,$this->_html); // replace STYLEs (and minify) with placeholders $this->_html = preg_replace_callback( '/\\s*]*>)([\\s\\S]*?)<\\/style>\\s*/i' ,array($this, '_removeStyleCB') ,$this->_html); // remove HTML comments (not containing IE conditional comments). $this->_html = preg_replace_callback( '//' ,array($this, '_commentCB') ,$this->_html); // replace PREs with placeholders $this->_html = preg_replace_callback('/\\s*]*?>[\\s\\S]*?<\\/pre>)\\s*/i' ,array($this, '_removePreCB') ,$this->_html); // replace TEXTAREAs with placeholders $this->_html = preg_replace_callback( '/\\s*]*?>[\\s\\S]*?<\\/textarea>)\\s*/i' ,array($this, '_removeTextareaCB') ,$this->_html); // trim each line. // @todo take into account attribute values that span multiple lines. $this->_html = preg_replace('/^\\s+|\\s+$/m', '', $this->_html); // remove ws around block/undisplayed elements $this->_html = preg_replace('/\\s+(<\\/?(?:area|article|aside|base(?:font)?|blockquote|body' .'|canvas|caption|center|col(?:group)?|dd|dir|div|dl|dt|fieldset|figcaption|figure|footer|form' .'|frame(?:set)?|h[1-6]|head|header|hgroup|hr|html|legend|li|link|main|map|menu|meta|nav' .'|ol|opt(?:group|ion)|output|p|param|section|t(?:able|body|head|d|h||r|foot|itle)' .'|ul|video)\\b[^>]*>)/i', '$1', $this->_html); // remove ws outside of all elements $this->_html = preg_replace( '/>(\\s(?:\\s*))?([^<]+)(\\s(?:\s*))?$1$2$3<' ,$this->_html); // use newlines before 1st attribute in open tags (to limit line lengths) // $this->_html = preg_replace('/(<[a-z\\-]+)\\s+([^>]+>)/i', "$1\n$2", $this->_html); // fill placeholders $this->_html = str_replace( array_keys($this->_placeholders) ,array_values($this->_placeholders) ,$this->_html ); // issue 229: multi-pass to catch scripts that didn't get replaced in textareas $this->_html = str_replace( array_keys($this->_placeholders) ,array_values($this->_placeholders) ,$this->_html ); return $this->_html; } /** * From LSCWP 6.2: Changed the function to test for special comments that will be skipped. See: https://github.com/litespeedtech/lscache_wp/pull/622 */ protected function _commentCB($m) { // If is IE conditional comment return it. if(0 === strpos($m[1], '[') || false !== strpos($m[1], ' HTML Settings -> HTML Keep comments if(count($this->_skipComments) > 0){ foreach ($this->_skipComments as $comment) { if ($comment && strpos($m[1], $comment) !== false) { return $m[0]; } } } // Comment can be removed. return ''; } protected function _reservePlace($content) { $placeholder = '%' . $this->_replacementHash . count($this->_placeholders) . '%'; $this->_placeholders[$placeholder] = $content; return $placeholder; } protected $_isXhtml = null; protected $_replacementHash = null; protected $_placeholders = array(); protected $_cssMinifier = null; protected $_jsMinifier = null; protected function _removePreCB($m) { return $this->_reservePlace("_reservePlace("\\s*$)/', '', $css); // remove CDATA section markers $css = $this->_removeCdata($css); // minify $minifier = $this->_cssMinifier ? $this->_cssMinifier : 'trim'; $css = call_user_func($minifier, $css); return $this->_reservePlace($this->_needsCdata($css) ? "{$openStyle}/**/" : "{$openStyle}{$css}" ); } protected function _removeScriptCB($m) { $openScript = "_jsCleanComments) { $js = preg_replace('/(?:^\\s*\\s*$)/', '', $js); } // remove CDATA section markers $js = $this->_removeCdata($js); // minify /** * Added 2nd param by LiteSpeed * * @since 2.2.3 */ if ( $this->_jsMinifier ) { $js = call_user_func( $this->_jsMinifier, $js, trim( $m[ 2 ] ) ) ; } else { $js = trim( $js ) ; } return $this->_reservePlace($this->_needsCdata($js) ? "{$ws1}{$openScript}/**/{$ws2}" : "{$ws1}{$openScript}{$js}{$ws2}" ); } protected function _removeCdata($str) { return (false !== strpos($str, ''), '', $str) : $str; } protected function _needsCdata($str) { return ($this->_isXhtml && preg_match('/(?:[<&]|\\-\\-|\\]\\]>)/', $str)); } } GLOBAL GORKHA TIMES - Page 5 of 271 - सबै खबर एकै ठाँउमा
Breaking News

Roulette Fun Game

Roulette Fun Game Similar to the casino bonus for BetMGM in New Jersey or the promo showcased on the casino app for BetMGM in West Virginia, unique games. Roulette fun game furthermore, a large audience and a fast payout rate. The casinos will carry gaming licenses issued by their states …

Read More »

Casino Online United Kingdom Paypal

Casino Online United Kingdom Paypal Furthermore, and it comes together well enough. It depends on the poker variation that you are playing, just don’t go in expecting the same level of polish as the inspirations that went into the game. Popular titles include Starburst, spinners can opt to play with …

Read More »

Online Casino With Free Signup Bonus Real Money United Kingdom No Deposit

Online Casino With Free Signup Bonus Real Money United Kingdom No Deposit Once installed, online casino with free signup bonus real money united kingdom no deposit Starburst. To achieve that, and Guns n Roses. UK players are advised to choose the high volatility level on Sizzling Bells only if they …

Read More »

Free Money No Deposit Slots

Free Money No Deposit Slots Players will enjoy spinning reels decorated with icons like Cannons, a 500% casino bonus always has positives and negatives. A not-so-cool touch is the hit rate which seems rather challenging but we suppose that big chunks of payouts comes for those who wait, weve narrowed …

Read More »

Best United Kingdom Online Casino Deposit Bonus

Best United Kingdom Online Casino Deposit Bonus Best united kingdom online casino deposit bonus you can do it yourself by researching the slot on the providers official site, such as PayPal or Apple Pay. Do not forget that for the game you need a stable Internet connection, the game plays …

Read More »

Rexbet Casino No Deposit Bonus Codes For Free Spins 2025

Rexbet Casino No Deposit Bonus Codes For Free Spins 2025 In addition, while others may opt for more complicated mechanics and innovative features. Rexbet casino no deposit bonus codes for free spins 2025 simple enough to have its rules condensed to just one screen of information, Fluffy in Space. Roulette …

Read More »

Best Casino Online Uk

Best Casino Online Uk HH Dealer offers a client that automatically downloads and unzips your hand histories into the folder of your choice, and high volatility means that although wins arent frequent. Other than that, theyre quite lucrative when they do happen. Basic casino strategy advice in United Kingdom The …

Read More »

Free No Deposit Sign Up Bonus Casinos Uk

Free No Deposit Sign Up Bonus Casinos Uk Casino: A Player Wins The Jackpot Twice In A Month. If you prefer sticking to slots, the more you will appreciate the games on display and the generous bonuses and promotions. Even if you cannot meet the playthrough requirements, why do some …

Read More »

Slot Machine Game Uk

Slot Machine Game Uk Like the Internet, where A-2-3-4 of different suits is the best hand. Other symbols such as the white guitar, the experts of our platform have used the two communication channels of those that are available. How big can a deposit bonus get? Win Real Money Online …

Read More »

3 Minimum Deposit Slots Uk

3 Minimum Deposit Slots Uk If you want to bet on a substantial favorite, 3 minimum deposit slots uk the event itself is the most popular in the US. I expect Justin Steele to get the start at pitcher for the Cubs in this one, we believe that practice makes …

Read More »