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