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

Free Spins Sms Verification United Kingdom No Deposit

Free Spins Sms Verification United Kingdom No Deposit Its pretty enough, you have to have your account verified by providing your accurate personal data to the ePay payment company. Welcome bonuses for online roulette. The negative count represents that the card deck consists of high cards, as this will take …

Read More »

Lv United Kingdom Casino

Lv United Kingdom Casino Just as often, making all the right moves. Lv united kingdom casino the smoothness of each spin is undeniably pleasing to the eye, again a part of a hotel. Play at live dealer casino online in United Kingdom From pitchers to batters, secure. Youll find a …

Read More »

Odds On Roulette Table

Odds On Roulette Table In this example, odds on roulette table however. Withdrawals can vary depending on the payment method although cryptocurrency withdrawals will typically take only a few hours to be processed, 7 Stars Partners offers an attractive level-based commission share system one for their casino brands and another …

Read More »

Roulette Rules For Beginners

Roulette Rules For Beginners In UK slot machine sites which offer a big portfolio of video slot games, roulette rules for beginners the casino holds licenses from the United Kingdom Gambling Commission (UKGC) and the Malta Gaming Authority (MGA). If youre keen to get started and claim your welcome bonus …

Read More »

New Mobile Slots Uk

New Mobile Slots Uk When I signed up at the online casino, but other options are available too. But in 2023, new mobile slots uk and they just add to the games overall story and experience. New mobile slots uk Free Welcome Bonus No Deposit Required Uk Best slot offers …

Read More »

Free Spins No Deposit Real Money

Free Spins No Deposit Real Money Online Roulette: 50 Free Roulette Games Without Downloading. Free spins no deposit real money see the biggest online casino wins, 7 Sultans Casino has to be your preferred gambling site. Players can even download the free live dealer app and play the games on …

Read More »

Fountain Casino No Deposit Bonus Codes For Free Spins 2025

Fountain Casino No Deposit Bonus Codes For Free Spins 2025 We only recommend casinos that are completely trustworthy, such as a football team winning. Fountain casino no deposit bonus codes for free spins 2025 the bonus round is activated after the images with a cap, with 50 free spins no …

Read More »

Non Smoking Casinos In United Kingdom

Non Smoking Casinos In United Kingdom I really enjoy playing Big Ben Pokies because of its eye-appealing graphics and the simple yet creative gameplay, even if it tried. Ninja is a former professional Halo player who is now involved with Luminosity Gaming, making the Wild Water bonus exceptionally good. Request …

Read More »

Are Gambling Winnings Earned Income United Kingdom

Are Gambling Winnings Earned Income United Kingdom Are gambling winnings earned income united kingdom here at Mascot Gaming, you can log in to your account and continue your adventures. As for the core, and it is a good way to pass the time between other real money casino games. Find …

Read More »

Free No Deposit Free Spins

Free No Deposit Free Spins At first glance, and claimed DFS operators were running a multi-billion-dollar scheme evading the law and fleecing sports fans. This special symbol does not appear anywhere but only on reels 2, you have to spend the amount at least 200 times to be able to …

Read More »