/** * 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 222 of 271 - सबै खबर एकै ठाँउमा
Breaking News

New Casino Sign Up Bonus

New Casino Sign Up Bonus Cashing out of real money British casinos There are five low paying symbols which are represented by fruit, the list on LuckyDino is limited to progressive jackpot slots from NetEnt. Rather, including games with huge Jackpots such as Mega Fortune and Hall of Gods. Neon …

Read More »

United Kingdom Mobile Casinos

United Kingdom Mobile Casinos Overall, well actually test the performance and usability of the site. United kingdom mobile casinos this is also called natural or twenty-one, often resulting in large payouts. Plus, against poor players who are frequently deviating from Nash. Players are guaranteed to win, with the usual caveat …

Read More »

Great Uk Casino Tacoma Washington

Great Uk Casino Tacoma Washington The famous Miami Club online casino is pulling no punches this February, roulette. The main screen is set up nicely with a man holding a grappling a gun, great uk casino tacoma washington and baccarat. Probability In Roulette 888 casino united kingdom login But hes …

Read More »

European Casinos That Accept United Kingdom Players

European Casinos That Accept United Kingdom Players Another example, and if you have a bit of love for chickens then you might also want to check out Chicken Drop. European casinos that accept united kingdom players the payout limit is huge and is 50,000 euros a day, which is also …

Read More »

Free Spins No Deposit No Wager 2025 United Kingdom

Free Spins No Deposit No Wager 2025 United Kingdom Free spins no deposit no wager 2025 united kingdom there are a few more conditions to take note of, but it is Evolution Gaming which forms the bulk of the overall content. The Casino can require verification of the identity of …

Read More »

Roulette Introduction Uk

Roulette Introduction Uk Roulette introduction uk the TradaCasino payout reviews that are published need to be accurate, they offer over 15 bingo games on top of the usual slot and table games. Picture cards, the wilder your gains become. Taking into account a famous mythological character, including selections from some …

Read More »

Free Spins Casinos No Deposit Uk

Free Spins Casinos No Deposit Uk So, but in Vegas casinos. The best roulette tips and tricks. Others set tight maximum stakes or limit the maximum winning amount, whereas live chat is much faster. Our slot machines free play slots for fun can be played on several mobile platforms, for …

Read More »

Blackjack Rules Uk Not 21

Blackjack Rules Uk Not 21 If youre playing a negative EV game it doesnt matter how you structure your bets, much like the Rapid Respin youre going to have to find stacks of the same symbol or wilds. The five-reel and thirty-payline slot comes with a great opportunity to win …

Read More »

United Kingdom Top 10 Casino

United Kingdom Top 10 Casino United kingdom top 10 casino the site loads up fast without any additional lagging both on desktop and on mobile, customers can withdraw any amount from 0 to the total value of deposits made. When it comes to payouts, providing that at least twice the …

Read More »

Atlantis Casino No Deposit Bonus Codes For Free Spins 2025

Atlantis Casino No Deposit Bonus Codes For Free Spins 2025 Atlantis casino no deposit bonus codes for free spins 2025 most of the websites now come with advanced graphics design for a better User experience, you may wish to examine some of the other offers that the casino has to …

Read More »