Я знаю различные способы усечения строки HTML на определенную длину, включая/не включая теги 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
и $length
падений в –
, он возвращает text text &nda...
, который отображает именно так, когда я должен был бы это вернуться text text...
EDIT:.
(отправил в ответ)
Преобразование их в символы затем обрезает, а затем преобразовать обратно в HTML-теги. – Pitchinnate
http://php.net/manual/en/function.html-entity-decode.php – user2180613
@Pitchinnate, что почти сработало, но не полностью для всех html-символов - ex: • не конвертировал – WOUNDEDStevenJones