You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
1.9 KiB
69 lines
1.9 KiB
<?php |
|
/** |
|
* @link http://www.yiiframework.com/ |
|
* @copyright Copyright (c) 2008 Yii Software LLC |
|
* @license http://www.yiiframework.com/license/ |
|
*/ |
|
|
|
namespace yii\widgets; |
|
|
|
use yii\base\Widget; |
|
|
|
/** |
|
* Spaceless widget removes whitespace characters between HTML tags. Whitespaces within HTML tags |
|
* or in a plain text are always left untouched. |
|
* |
|
* Usage example: |
|
* |
|
* ```php |
|
* <body> |
|
* <?php Spaceless::begin(); ?> |
|
* <div class="nav-bar"> |
|
* <!-- tags --> |
|
* </div> |
|
* <div class="content"> |
|
* <!-- tags --> |
|
* </div> |
|
* <?php Spaceless::end(); ?> |
|
* </body> |
|
* ``` |
|
* |
|
* This example will generate the following HTML: |
|
* |
|
* ```html |
|
* <body> |
|
* <div class="navbar"><!-- other tags --></div><div class="content"><!-- other tags --></div></body> |
|
* ``` |
|
* |
|
* This method is not designed for content compression (you should use `gzip` output compression to |
|
* achieve it). Main intention is to strip out extra whitespace characters between HTML tags in order |
|
* to avoid browser rendering quirks in some circumstances (e.g. newlines between inline-block elements). |
|
* |
|
* Note, never use this method with `pre` or `textarea` tags. It's not that trivial to deal with such tags |
|
* as it may seem at first sight. For this case you should consider using |
|
* [HTML Tidy Project](http://tidy.sourceforge.net/) instead. |
|
* |
|
* @see http://tidy.sourceforge.net/ |
|
* @author resurtm <resurtm@gmail.com> |
|
* @since 2.0 |
|
*/ |
|
class Spaceless extends Widget |
|
{ |
|
/** |
|
* Starts capturing an output to be cleaned from whitespace characters between HTML tags. |
|
*/ |
|
public function init() |
|
{ |
|
ob_start(); |
|
ob_implicit_flush(false); |
|
} |
|
|
|
/** |
|
* Marks the end of content to be cleaned from whitespace characters between HTML tags. |
|
* Stops capturing an output and echoes cleaned result. |
|
*/ |
|
public function run() |
|
{ |
|
echo trim(preg_replace('/>\s+</', '><', ob_get_clean())); |
|
} |
|
}
|
|
|