PCRE, вывод в одну

Voyager2K

Новичок
PCRE, вывод в одну

На многих сайтах часто пользователю предоставляется весь html в одну строку.
Это:
1. Дает небольшую экономию места на символах \r \n \t
2. Усложняет цитабельность кода для любопытных ручек


Попытался реализовать такой функционал, но нарвался на прблему
PHP:
		$tt = '
			s
			<script>here can be code // comment
			// too comment
			code();</script>
			
			text
			// simple text
			
			<script language="javascript">
			some text; //comment here . 
			code();
			var foo = "http:://url/"; // comment
			var foo2 = \'http:://url2/\'; // comment
			</script>
			
			more text
		';
		$tt = preg_replace('~(<script.*?)(//.*?[\r\n]){0,999}(.*?/script>)~si','$1$3', $tt);
		die('<pre>'.htmlspecialchars($tt).'</pre>');
Проблемы связаны с возможными js вставками, т.е. наличии в них одностроных комментов(так как при слитии в одну строку куча js-а выпадет):
1. режется только первый коммент js блоке
2. нуно исключить коммент символы в переменных js (например, если будет указываться урл var foo = "http:://url/";)

Не хочется превращать эту задачу в пошаговое, чуть ли не посимольное прохождение html-кода.
И не хочется отказывать от, порой, удобной возмоности писать и комментировать js-код прямо в html (без инклуда скрипта)
 

kruglov

Новичок
хм, вообще-то эта фигня на сайтах происходит как правило не с тайными целями, а по банальным причинам, что
PHP:
$msg="hello";
?><td><?
echo $msg;
?></td><?
выдаст <td>hello</td> без признаков переноса строк.

-~{}~ 21.03.07 19:56:

Это я к тому, что вы не тем занимаетесь...
 

Voyager2K

Новичок
kruglov, ну да, и все шаблоны движка лежат в одну строку ? Не завидую тому верстальщику, которому прейдеться поддерживать такие сайты.
Или, даже, если весь хтмл код лежит прямо в пхп, то трудно найти сайт где бы не было нескольких строчек html без пхп-вставок, а следовательно там будут переносы.
Однако, я неоднократно натыкался на сайты (увы, как пример не могу привести), где ВСЕ было в одну строку. Это так просто случайно друдно достичь. Не пишут же они:
Код:
echo
	'<tag>'.
		'<subtag>'.
		
		'</subtag'.
	'</tag>';
Я не делаю ставку на тайные цели, ибо это обходиться парочкой щелчком с помощью любой проги способной форматировать xml-подобный синтаксис.

При склеивании кучи шаблонов очень часто сбиваются отступы:
Шаблона "раз":
Код:
<table>
	<tr>
		<td>
			{include template2}
		</td>
	</tr>
</table>
шаблон два:
Код:
<ul>
	<li>меню</li>
	<li>меню</li>
</ul>

Получим в итоге:
Код:
<table>
	<tr>
		<td>
			<ul>
	<li>меню</li>
	<li>меню</li>
</ul>
		</td>
	</tr>
</table>
Не сильно красиво, верно? Уж лучше, дабы не позориться таким ужасом, вообще не давать толком читать ;)

Плюс, все же эокномия лишних 100-300 сиволов !! ))))
Не надо махать в сторону gzip сжатия... это другая опера.

Понимаю, задача не сильно оправдывает себя, однако стоит все же внимания, имхо.
 

tashkentchi

Новичок
Тебе не только <script> надо учитывать, но еще и <pre>. Вобщето, если есть tidy, то можно его заюзать для этих целей. Заодно и кривой хтмл будет исправлять.
 

kruglov

Новичок
off:
Не завидую тому верстальщику, которому прейдеться поддерживать такие сайты
Кому "прейдется", как раз можно завидовать. А вот кому все-таки "придется"...
 
Сверху