вопрос
Добрый день,помогите внедрить в DLE
Как это сделать что бы работало в полной новости?
Спасибо.
Пример использования:
Как это сделать что бы работало в полной новости?
Спасибо.
<?php
function close_tags($html){
$ignored_tags = array('br', 'hr', 'img');
# ищем открывающиеся теги
preg_match_all("#<([a-z]+)( .*)?(?!/)>#iU",$html,$result);
$openedtags=$result[1];
# удаляем незакрывающиеся теги
foreach($openedtags as $i=>$tag)
{
if( in_array($tag, $ignored_tags) )
{
unset($openedtags[$i]);
}
}
# ищем закрывающие теги
preg_match_all("#{C}<!--([a-z]+)-->#iU",$html,$result);
$closedtags=$result[1];
$len_opened = count($openedtags);
# если все теги закрыты
if(count($closedtags) == $len_opened){
# TODO: здесь хорошо бы проверять
# соответствие тегов, например,
# если открыты <div> и <b>,
# а закрыты <em> и <p>
# то скрипт посчитает, что все теги закрыты.
return $html;
}
$openedtags = array_reverse($openedtags);
# закрываем теги
for($i=0;$i < $len_opened;$i++) {
if (!in_array($openedtags[$i],$closedtags)){
$html .= '<!--'.$openedtags[$i].'-->';
} else {
unset(
$closedtags[
array_search(
$openedtags[$i],
$closedtags
)]);
}
}
return $html;
}
?>
Пример использования:
$html = close_tags($_POST['html']);