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

HTML - parser

HTML - parser

Думаю все видели хтмл код яндекса.

Есть 2 пути как этого добится

1. Вручную удаляем лишние пробелы и символы

Путь для задротов, по другому и не скажешь) Безумно усложняет дальнейшее развитие и отладку проекта.

2. Можно сделать специальный парсер обфускатор, что собственно я и сделал.

Задачи к парсеру обфускатору были примерно такими:

Удаление всех пробелов в тегах кроме первого и значений в кавычках, удаление переносов, табуляций и прочего мусора.


Было:
alt text
Стало:
alt text

Код самого персера:

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>

Google Bookmarks Digg Reddit del.icio.us Ma.gnolia Technorati Slashdot Yahoo My Web News2.ru БобрДобр.ru RUmarkz Ваау! Memori.ru rucity.com МоёМесто.ru TEXT LINK Mister Wong
Крутые электронные девайсы! Не пропусти!
А ты %username% видел, как Крутые обновился Divaxo.ru

Читай с RSS. Не пропусти интересное)

Теги: ,

Вторник, 16 Фев 2010 PHP, Веб-мастеру, Мой скрипт

5 комментариев на Чистка html. HTML обфускатор

  1. Мне кажется, не корректно называть этот скрипт парсером. Он скорее подходит фильтр вывода, 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. Ney on 16 Фев 2010
  3. во, ни как слово не мог вспомнит «обфускатор»)
    спасибо, поправил

  4. DrNemo on 17 Фев 2010
  5. Ещё заметил, что в тексте 2 раза встречается слово «персер». Похоже на опечатку.

  6. Ney on 19 Фев 2010
  7. 1.Не персер а парсер.
    2.Посмотрел код,хз насчёт первого,не присматривался,но второй точно на работает так как надо…Элементарный пример:
    Привет
    как дела?
    Чего молчим?=((

    из этого сделает: Приветкак дела?Чего молчим?=((

  8. miXOnIN on 30 Мар 2010
  9. Ney, miXOnIN:
    спасибо, очепятка)
    miXOnIN:
    Позвольте не согласится!
    ваш пример на хтмл будет выглядеть так:
    Привет< br>
    как дела?< br>
    Чего молчим?=((< br>
    А результат соответственно:
    Привет< br>как дела?< br>Чего молчим?=((< br>

  10. DrNemo on 06 Апр 2010

Ваш отзыв

Читать в Яндекс.Ленте
регистрация доменов
Зарегистрируй себе домен!
.RU - 99 рублей в год
www.
Блогун - реклама в блогах. Хостинг для блогов

Поиск

 

Комментарии