Обрезать текст, содержащий HTML, игнорируя теги
Я хочу обрезать некоторый текст (загруженный из базы данных или текстового файла), но он содержит HTML, поэтому в результате включаются теги и возвращается меньше текста. Это может привести к тому, что теги не будут закрыты или частично закрыты (поэтому Tidy может работать некорректно, а контента по-прежнему меньше). Как я могу усечь, основываясь на тексте (и, возможно, остановиться, когда вы доберетесь до таблицы, так как это может вызвать более сложные проблемы).
substr("Hello, my <strong>name</strong> is <em>Sam</em>. I´m a web developer.",0,26)."..."
В результате:
Hello, my <strong>name</st...
Что бы я хотел, это:
Hello, my <strong>name</strong> is <em>Sam</em>. I´m...
Как я могу это сделать?
Хотя мой вопрос заключается в том, как сделать это в PHP, было бы хорошо узнать, как это сделать в C # ... либо все должно быть в порядке, так как я думаю, что я смог бы перенести метод поверх (если он не является встроенным в метод).
Также обратите внимание, что я включил HTML-сущность´
- который должен рассматриваться как один символ (а не 7 символов, как в этом примере).
strip_tags
это запасной вариант, но я бы потерял форматирование и ссылки, и все равно возникла бы проблема с HTML-сущностями.