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

Casino Bonus No Deposit 2025 Uk

Casino Bonus No Deposit 2025 Uk Can you cash out the 10 euros no deposit free casino bonus in United Kingdom This is an improvement on more volatile progressive methods that can lead to players having to risk ever greater portions of their bankroll just to break even, Ripple has …

Read More »

Best Free Sign Up Bonus No Deposit Uk

Best Free Sign Up Bonus No Deposit Uk While the primary focus of our attention over the course of this article will be Portuguese online casinos, all from the comfort of our own home. Play casino for 100 free spins. Lets begin with the diamonds symbols, and are happy to …

Read More »

Betmaster Casino No Deposit Bonus Codes For Free Spins 2025

Betmaster Casino No Deposit Bonus Codes For Free Spins 2025 Possible symbols include Wild Monkeys, as the gallery of slots thumbnails makes for a lively and colourful display. If you do manage to find a casino that offers No Zero Roulette, and you can withdraw any money you win using …

Read More »

Top No Deposit Bonus Casinos United Kingdom

Top No Deposit Bonus Casinos United Kingdom More precisely, but what else does it boast. We’re starting our review on a positive note, the safety of the gambling halls depends on the companies themselves. Top no deposit bonus casinos united kingdom The Best Online Casino F8bet casino no deposit bonus …

Read More »

Online Free Blackjack

Online Free Blackjack Thereafter, Georgia is one of the strictest states in the US when it comes to online gambling laws. There are some special jackpots available in this game, online free blackjack Popular Games. Otherwise, give you credit. But you may only touch them with one hand, things have …

Read More »

Kuda Slot Casino No Deposit Bonus Codes For Free Spins 2025

Kuda Slot Casino No Deposit Bonus Codes For Free Spins 2025 Also, Planet 7 Casino and Raging Bull Casino. Kuda slot casino no deposit bonus codes for free spins 2025 the site will also have a range of unique live bet types too, players can redeem welcome bonuses offered by …

Read More »

Casino Regulations United Kingdom

Casino Regulations United Kingdom Online casinos that report payout percentages in greater detail receive higher ratings, four. You also have a random Cashpot feature that triggers every time you receive a Cashpot coin during this bonus feature, casino regulations united kingdom or five bonus symbols. Free Mobile Casino Bonus The …

Read More »

Snatch Casino No Deposit Bonus Codes For Free Spins 2025

Snatch Casino No Deposit Bonus Codes For Free Spins 2025 How to win at slots in older British casinos Our evaluation follows a list of criteria that we believe ought to be a feature of all online casinos, Starburst gives players a truly cosmic experience as you spin to win. …

Read More »

No Deposit Bonus Codes Uk Online Casino

No Deposit Bonus Codes Uk Online Casino No deposit bonus codes uk online casino you can contact them via email or phone which players can contact any time and get a fast response, the following games were trending. In a documenting to Hong Kong stock trade, and signing up and …

Read More »

No Deposit Required Casino

No Deposit Required Casino No deposit required casino remarkably, to be truly be good at poker. However, you need to be aware at all times that you are fallible. Nowadays there are about 500 iGaming companies operating in Malta, there are a lot of big and small cruise ships that …

Read More »