Viewing file: IgnoredCommentPreserver.php (1.49 KB) -rw-rw-rw- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
class Minify_IgnoredCommentPreserver { protected $_replacementHash = ''; protected $_ignoredComments = array(); protected $_placeholders = array();
public function __construct() { $this->_replacementHash = 'IgnoredCommentPreserver_' . md5(time()); }
public function setIgnoredComments($ignoredComments = array()) { $this->_ignoredComments = $ignoredComments; }
public function search(&$html) { $html = preg_replace_callback('/<!--[\\s\\S]*?-->/', array($this, '_callback'), $html); }
public function replace(&$html) { $html = str_replace(array_keys($this->_placeholders), array_values($this->_placeholders), $html); }
protected function _callback($match) { list($comment) = $match;
if ($this->_isIgnoredComment($comment)) { return $this->_reservePlace($comment); }
return $comment; }
protected function _isIgnoredComment(&$comment) { foreach ($this->_ignoredComments as $ignoredComment) { if (stristr($comment, $ignoredComment) !== false) { return true; } }
return false; }
protected function _getPlaceholder() { return '%%' . $this->_replacementHash . '_' . count($this->_placeholders) . '%%'; }
protected function _reservePlace(&$content) { $placeholder = $this->_getPlaceholder();
$this->_placeholders[$placeholder] = &$content;
return $placeholder; } }
|