htmlspecialchars - Преобразует специальные символы в HTML-сущности. Если вам нужно выводить текст с html тегами, который будет виден в dom - такой подход вам не подойдет. В этом случаем вам нужно чистить входящие данные от неугодного: тегов "", событий на элементах и.т.д. Но давать обычному пользователю возможность вставлять любые теги - плохая идея. Реализуйте bb коды или что-то подобное, если же это какая-нибудь админка и нужна возможность вставлять тего, то тут уже защита не нужна - человек только сам может отстрелить себе ногу. Посмотрите любую cms - в админке вы можете вставить любой js, html и он будет выведен - безопасность ложится на самого пользователя админки.