Крутые электронные девайсы! Не пропусти!
А ты %username% видел, как Крутые обновился Divaxo.ru
Чистка html. HTML обфускатор

HTML - parser
Думаю все видели хтмл код яндекса.
Есть 2 пути как этого добится
1. Вручную удаляем лишние пробелы и символы
Путь для задротов, по другому и не скажешь) Безумно усложняет дальнейшее развитие и отладку проекта.
2. Можно сделать специальный парсер обфускатор, что собственно я и сделал.
Задачи к парсеру обфускатору были примерно такими:
Удаление всех пробелов в тегах кроме первого и значений в кавычках, удаление переносов, табуляций и прочего мусора.
1 2 3 4 | Было: <img title="пример title" src="url" alt="alt text" width="400" height="400" /> Стало: <img title="пример title"src="url"alt="alt text"width="400"height="400"/> |
Код самого персера:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 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; } } |
Как пользоваться:
1 2 3 | $parser = new parser_html($text); echo $parser->parser(); //где $text хтмл страницы |
Однако должен сразу предупредить, парсер не обрабатывает поля < textarea>
5 комментариев на Чистка html. HTML обфускатор
Ваш отзыв
Классификатор
- JS (1)
- PHP (16)
- блогинг (4)
- Блогообзор (2)
- Веб-мастеру (11)
- интересное (19)
- Мой скрипт (10)
- Новости (12)
Теги
Поиск
Комментарии
- Александр Борисов к записи Постовой – плагин для WordPress
- sidash к записи Постовой – плагин для WordPress
- Alexander к записи Постовой – плагин для WordPress
- LaaCrus к записи Старт блогообзора
- ИстинА к записи Работа с почтой средствами PHP



Мне кажется, не корректно называть этот скрипт парсером. Он скорее подходит фильтр вывода, 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>