Записи. html парсер. Часть вторая, инициализация
17 лет назадПродолжив колдовать и создав несколько функций инициализации, мы получаем следующую картину.
function ClearAllow(){
$this->allow=array();
}
function InitAllow(){
$this->SetAllow(array(
'a' => array('href','target','style','class'),
'img' => array('src','border','alt','title','style','class','width','height','align'),
'br' => array('style','clear','class'),
'hr' => array('style','clear','class'),
'span' => array('style','class'),
'div' => array('style','class'),
'p' => array('style','title','class'),
'ul' => array('style','class'),
'li' => array('style','class'),
'ol' => array('style','class'),
'sup' => array('style','class'),
'sub' => array('style','class'),
'b' => array('style','class'),
'i' => array('style','class'),
'u' => array('style','class'),
's' => array('style','class'),
'em' => array('style','class'),
'strong' => array('style','class'),
'center' => array('style','class'),
'form' => array('style','class','action','method','target'),
'h1' => array('style','class'),
'h2' => array('style','class'),
'h3' => array('style','class'),
'h4' => array('style','class'),
'h5' => array('style','class'),
'h6' => array('style','class'),
'input' => array('type','value','name','style','class','readonly','disabled'),
'label' => array('style','class'),
'object' => array('classid','codebase','width','height'),
'param' => array('name','value'),
'embed' => array('type','height','width','wmode','src','flashvars'),
'table' => array('class','style','cellpadding','cellspacing','border','id'),
'tr' => array('class','style','id'),
'th' => array('class','style','id'),
'td' => array('class','style','col'),
'pre' => array('class','style','id'),
));
//
}
function AddReplace($from,$to){
$this->ReplaceTagsFrom[] =$from;
$this->ReplaceTagsTo[] =$to;
}function SetAllow($array){
$this->allow=$array;
}
Рассмотрим функции подробнее:
ClearAllow - Является своего рода функцией инициализации, которая просто очищает список доступных тегов, тоесть воспользовался ей и ни один кусок кода не пройдёт.
InitAllow - Создаёт массив, в котором ключами являются допустимые теги, а значениями - допустимые параметры у этих тегов. Приведённый выше пример, достаточен, для большеого числа HTML кода.
AddReplace - Необходима, только для правильного заполения массива замен тегов. Один из важных это замена тега <lj user=""> и в будующей тега используемого на маил.ру.
SetAllow - Применятеся для установки смассива замен созданного в функции инициализации.
Что может потребоваться в дальнейшем: Функции отключения каких-то замен, на время работы парсера. Также функции добавления и удаления отдельных тегов и параметров тегов.
В третьей части будет рассотрена логика и сам парсер.