Если вы хотите, чтобы теги HTML оставались, но были правильно закрыты, см. PHP: обрезать HTML, игнорируя теги . В противном случае читайте дальше:
strip_tags удалит теги HTML, но не объекты HTML (например, &
), которые могут по-прежнему вызывать проблемы при усечении.
Для обработки сущностей также можно использовать html_entity_decode , чтобы декодировать сущности после удаления тегов, затем обрезать и, наконец, перекодировать сущности с помощью htmlspecialchars :
$text = "1 < 2\n";
print $text;
print htmlspecialchars(substr(html_entity_decode(strip_tags($text), ENT_QUOTES), 0, 3));
(Обратите внимание на использование ENT_QUOTES для фактического преобразования всех сущностей.)
Результат:
1 < 2
1 <
Сноска: Вышеуказанное работает только для объектов, которые могут быть декодированы в соответствии с ISO-8859-1. Если вам нужна поддержка международных символов, вы уже должны работать со строками в кодировке UTF-8 и просто должны указать это при вызове html_entity_decode .