Чистка html. HTML обфускатор

HTML - parser
Думаю все видели хтмл код яндекса.
Есть 2 пути как этого добится
1. Вручную удаляем лишние пробелы и символы
Путь для задротов, по другому и не скажешь) Безумно усложняет дальнейшее развитие и отладку проекта.
2. Можно сделать специальный парсер обфускатор, что собственно я и сделал.
Задачи к парсеру обфускатору были примерно такими:
Удаление всех пробелов в тегах кроме первого и значений в кавычках, удаление переносов, табуляций и прочего мусора.
Было:
Стало:
Код самого персера:
class parser_html{
var $html = '';
function __construct($html){$this->html=$html;}
function parser(){
$end=$this->html;
preg_match_all('|<.*>|U',$this->html,$itog);
foreach($itog[0] as $val){
$num=strpos($val," ");$tag=trim(substr($val,1,$num));$tag_print=$tag==""?$tag:"<$tag ";
$content=$tag_print.$this->tag(trim(substr($val,$num)));
$end=str_replace($val,$content,$end);
}
$end=preg_replace("/[\r\n\t]?/",'',$end);$end=str_replace(" ",'',$end);
return $end;
}
private function tag($tag){
preg_match_all('|(.*)=\"(.*)\"|U',$tag,$itog);
foreach($itog[0] as $val){$tag=str_replace($val,trim($val),$tag);}
return $tag;
}
}
Как пользоваться:
$parser = new parser_html($text);
echo $parser->parser();
//где $text хтмл страницы
Однако должен сразу предупредить, парсер не обрабатывает поля < textarea>
5 комментариев на Чистка html. HTML обфускатор
Ваш отзыв
Классификатор
- JS (1)
- PHP (15)
- блогинг (4)
- Блогообзор (2)
- Веб-мастеру (10)
- интересное (18)
- Мой скрипт (10)
- Новости (12)
Теги
Поиск
Комментарии
- Konstantin к записи 370 запрещенных паролей твиттера
- Alexander к записи Постовой – плагин для WordPress
- LaaCrus к записи Старт блогообзора
- ИстинА к записи Работа с почтой средствами PHP
- Первый отчет по эксперименту с блогуном | 1000$ к записи Постовой – плагин для WordPress



Мне кажется, не корректно называть этот скрипт парсером. Он скорее подходит фильтр вывода, html-компрессор или обфускатор.
Я использовал вот такой фильтр в своих проектах:
function htmlcompress($source) {
preg_match_all(‘!([^<]+)!’, $source, $pre);
$source = preg_replace(‘![^<]+!’, ‘#pre#’, $source);
$source = preg_replace(‘##’, », $source);
$source = preg_replace(‘/[\r\n\t]+/’, ‘ ‘, $source);
$source = preg_replace(‘/>[\s]+<', $source);
$source = preg_replace('/[\s]+/', ' ', $source);
if (!empty($pre[0])) {
foreach ($pre[0] as $tag) {
$source = preg_replace('!#pre#!', $tag, $source, 1);
}
}
return $source;
}
во, ни как слово не мог вспомнит «обфускатор»)
спасибо, поправил
Ещё заметил, что в тексте 2 раза встречается слово «персер». Похоже на опечатку.
1.Не персер а парсер.
2.Посмотрел код,хз насчёт первого,не присматривался,но второй точно на работает так как надо…Элементарный пример:
Привет
как дела?
Чего молчим?=((
из этого сделает: Приветкак дела?Чего молчим?=((
Ney, miXOnIN:
спасибо, очепятка)
miXOnIN:
Позвольте не согласится!
ваш пример на хтмл будет выглядеть так:
Привет< br>
как дела?< br>
Чего молчим?=((< br>
А результат соответственно:
Привет< br>как дела?< br>Чего молчим?=((< br>