Я знаю различные способы усечения строки HTML до определенной длины, включая / не включая теги HTML, как часть результата и / или усечение при сохранении целых слов и еще чего-то. Моя проблема, однако, в том, что строка содержит специальные символы, такие как –
или &
Мне нужно усечь строку до 100 символов (или несколько меньше, если она в противном случае обрезается в середине специального символа). Прямо сейчас у меня есть функция:
$result= truncateIfNecessary(strip_tags($fullText), 100); //ignore HTML tags function truncateIfNecessary($string, $length) { if(strlen($string) > $length) { return substr($string, 0, $length).'...'; } else { return $string; } }
Но если строка – это что-то вроде text text – text
text text – text
(отображается на странице как: text text - text
и $length
падает в –
он возвращает text text &nda...
который отображается точно так, когда мне понадобится его, чтобы вернуть text text...
РЕДАКТИРОВАТЬ:
(опубликовано как ответ)