Правильный анонс к тексту или закрываем незакрытые теги

в 14:25, , рубрики: web, Веб-разработка, метки:

После добавления статьи и вывода списка статей на главной странице своего самописного блога возник вопрос об анонсе. Если обрезать определенное количество символов, то обрезаются и хтмл теги добавляемые текстовым редактором. От такого «анонсирования» верстка ползет по швам. И, ясное дело, меня не устраивает. После неслабого наряга в этой связи решение было найдено. Вот он метод для создания правильного анонса.

function anons($html = '')
{
    $html = trim($html);
     
    $anons_tag = "<!-- my-anons -->";
     
    $html = addslashes($html);
 
    preg_match('/^(.*)' . $anons_tag . '/SUsi',$html,$res);
     
    $html = !empty($res[1]) ? stripslashes($res[1]) : stripslashes($html);
            
    #put all opened tags into an array
    preg_match_all("##iU",$html,$result);
    $openedtags = array_unique($result[1]);
     
    #put all closed tags into an array
    preg_match_all("##iU",$html,$result);
    $closedtags = array_unique($result[1]);
    $len_opened = count($openedtags);
    # all tags are closed
    if(count($closedtags) == $len_opened){
        return $html;
    }
     
    $openedtags = array_reverse($openedtags);
    # close tags
    for($i=0;$i < $len_opened;$i++) {
        if (!in_array($openedtags[$i],$closedtags)){
            $html .= '';
        } else {
            unset($closedtags[array_search($openedtags[$i],$closedtags)]);
        }
    }
    return $html;
}

Переменная $anons_tag хранит в себе текст тега анонса. Он может быть любым. Его вы вставляете в конце анонса.

Автор: frentsel

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js