php HTML код в одну строку на PHP 

Дата публикации  Дата изменения03.02.13  КомментарииНет   Просмотры3810

Преобразование HTML кода в одну строку. Безопасно уменьшает размер кода за счет пробелов между тегами и переводов на новую строку и ускоряет загрузку сайта/страницы.

Вариант 1:

<?php $text='  <!DOCTYPE>
<html>
<head>
<title>HTML код в одну строку</title>
</head>
<body>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. <br />
Etiam dictum euismod laoreet. <br />
Proin sed turpis eu eros imperdiet condimentum at nec sem. <br />
Cras fermentum rutrum fermentum. <br />
In facilisis scelerisque accumsan. <br />
In vitae justo ut mi tincidunt volutpat vel vitae nibh. <br />
Vestibulum sem orci, accumsan quis gravida et, porttitor nec nisl. <br />
Praesent erat risus, gravida nec volutpat vitae, venenatis eu libero. <br />
Vestibulum lacinia justo at augue cursus tristique. <br />
Proin enim elit, porta venenatis vehicula vel, ornare ut eros. <br />
Etiam adipiscing tincidunt viverra.<br />
 Aliquam et nibh justo. <br />
Quisque ut nulla nunc, a vehicula orci.<br />
Nullam eu odio velit, eu molestie odio. <br />
Sed at justo quis massa dictum egestas.<br />
</p>  
<!--//-->
<script type="text/javascript">document.write(\'<h1>Hello, World!</h1>\');</script>
<!--//-->
</body>
</html>
';
$s=str_replace("\r\n"," ",$text);
echo preg_replace("/((?<=>)|(?<=--)|(?<=.))[\s\n\r\t]+((?=--)|(?=<))/U",'',$s);?>

Повтор \r\n в str_replace и preg_replace намеренный – так весь исходный код в одну строку (вместе с <br />).

Или без str_replace – так в одну строку только теги (кроме <br />):

<?php $text='  <!DOCTYPE>
<html>
<head>
<title>HTML код в одну строку</title>
</head>
<body>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. <br />
Etiam dictum euismod laoreet. <br />
Proin sed turpis eu eros imperdiet condimentum at nec sem. <br />
Cras fermentum rutrum fermentum. <br />
In facilisis scelerisque accumsan. <br />
In vitae justo ut mi tincidunt volutpat vel vitae nibh. <br />
Vestibulum sem orci, accumsan quis gravida et, porttitor nec nisl. <br />
Praesent erat risus, gravida nec volutpat vitae, venenatis eu libero. <br />
Vestibulum lacinia justo at augue cursus tristique. <br />
Proin enim elit, porta venenatis vehicula vel, ornare ut eros. <br />
Etiam adipiscing tincidunt viverra.<br />
 Aliquam et nibh justo. <br />
Quisque ut nulla nunc, a vehicula orci.<br />
Nullam eu odio velit, eu molestie odio. <br />
Sed at justo quis massa dictum egestas.<br />
</p> 
<!--//-->
<script type="text/javascript">document.write(\'<h1>Hello, World!</h1>\');</script>
<!--//-->
</body>
</html>
';
echo preg_replace("/((?<=>)|(?<=--)|(?<=.))[\s\n\r\t]+((?=--)|(?=<))/U",'',$text);
?>

Условие (?<=--) включено для:

<!--
   текст
--> 

Можно включать и JavaScript, с экранированием (или заменой) одинарных кавычек, или в виде подключаемого скрипта <script src=""></script>.

Вариант третий, через использование cURL, обрабатывает и результат работы php:

1. Файл (адрес), откуда будем получать контент (динамический, статический):

text.php:

<!DOCTYPE>
<html>
<head>
<title>HTML код в одну строку</title>
</head>
<body>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. <br />
Etiam dictum euismod laoreet. <br />
Proin sed turpis eu eros imperdiet condimentum at nec sem. <br />
Cras fermentum rutrum fermentum. <br />
In facilisis scelerisque accumsan. <br />
In vitae justo ut mi tincidunt volutpat vel vitae nibh. <br />
Vestibulum sem orci, accumsan quis gravida et, porttitor nec nisl. <br />
Praesent erat risus, gravida nec volutpat vitae, venenatis eu libero. <br />
Vestibulum lacinia justo at augue cursus tristique. <br />
Proin enim elit, porta venenatis vehicula vel, ornare ut eros. <br />
Etiam adipiscing tincidunt viverra.<br />
 Aliquam et nibh justo. <br />
Quisque ut nulla nunc, a vehicula orci.<br />
Nullam eu odio velit, eu molestie odio. <br />
Sed at justo quis massa dictum egestas.<br />
</p> 
<!--//-->
<script type="text/javascript">document.write('<h1>JS работает</h1>');</script>
<!--//-->
<!--//-->
<?php
echo "<h1>PHP работает</h1>";
?>
<!--//-->
</body>
</html>

2. Файл (адрес), в который будем вызывать контент, преобразовывать все в одну строку и выводить:

index4.php:

<?php 
//Получаем динамическое (статическое содержимое)
$ch = curl_init ("http://coder.hol.es/example/php/one_line/text.php");
$fp = fopen ("buffer.html", "w");
//открываем буферный (промежуточный файл - уже предварительно его создали) и записываем
curl_setopt ($ch, CURLOPT_FILE, $fp);
curl_setopt ($ch, CURLOPT_HEADER, 0);
curl_exec ($ch);
curl_close ($ch);
fclose ($fp);
//закрываем файл
$file = 'buffer.html';
$buffer = file_get_contents($file);
// Получаем содержимое полученного :) динамического/статического содержимого из файла и помещаем в переменную
function one_line($buffer)
// обрабатываем переменную
{
// удалить пробелы между html тегами, кроме <pre>
	$buffer = preg_replace('/(?:(?<=\>)|(?<=\/\>))\s+(?=\<\/?)/', '', $buffer);
	if (FALSE === strpos($buffer, '<pre')) {
 $buffer = preg_replace('/\s+/', ' ', $buffer);
	}
// удалить новые строки,за которыми пробелы
	$buffer = preg_replace('/[\t\r]\s+/', ' ', $buffer);
// но сохранить комментарии IE 
	$buffer = preg_replace('/<!(--)([^\[|\|])^(<!-->.*<!--.*-->)/', '', $buffer);
// и скрыть css комменты
	$buffer = preg_replace('/\/\*.*?\*\//', '', $buffer);
//
	return $buffer;
}
echo one_line($buffer); //выводим окончательный результат
?>

 Смотреть пример – Вариант первый

 Смотреть пример – Вариант второй

 Смотреть пример – Вариант третий

 Смотреть пример – Вариант четвертый, с cURL

  Размер:  4,88kB | Изменен:  2.02.13 | Загрузок: 53
Бесплатные курсы

Категории,

Теги: , , , ,

Оцените материал:

Рейтинг: 1.0/10 (3)


КомментарииКомментарии:

Нет комментариев к этой статье.


Поля, обозначенные как *, обязательны.





Максимальная длина сообщения 900 символов. Осталось   символов

 

Старые →← Новые