Преобразование HTML в текст в PHP для email с UTF-8
Быстрый ответ
Если вам нужно преобразовать HTML в чистый текст в PHP, просто примените функцию strip_tags()
, которая эффективно уберёт HTML-разметку. Полученный таким образом текст будет идеален для отправки по электронной почте.
Пример кода:
$plainText = strip_tags("<h1>Заголовок</h1><p>Сообщение</p>");
// Результат: Заголовок Сообщение – быстро и наглядно!
Если нужно сохранить переносы строк, перед удалением тегов замените <br>
на \n
.
Сохраняем форматирование с помощью html2text
Для конвертации HTML с сохранением форматирования используйте библиотеку html2text. Она преобразует HTML в текст, сохраняя ключевые элементы стиля.
Установка через Composer:
composer require html2text/html2text
Пример кода:
use \Html2Text\Html2Text;
$html = "<h1>Заголовок</h1><p>Сообщение</p>";
$text = new Html2Text($html);
// Результат: 'Заголовок\n\nСообщение'. HTML-теги спокойно уходят в отпуск!
Работаем с символами UTF-8
При решении задач, связанных с символами UTF-8, стандартные методы PHP могут быть неэффективными. В этих случаях используйте функцию mb_convert_encoding()
, чтобы избежать проблем при удалении тегов.
$html = "<p>Текст UTF-8: Ω≈ç√∫˜µ≤≥÷</p>";
$utf8Text = mb_convert_encoding($html, 'HTML-ENTITIES', "UTF-8");
$plainText = strip_tags($utf8Text);
// Результат: Текст UTF-8: Ω≈ç√∫˜µ≤≥÷. Спецсимволы больше не вызовут неприятностей!
Решение для профессионалов: lynx
Для специалистов, хорошо знакомых с HTML, оптимальным вариантом будет использование текстового браузера lynx в сочетании с функцией proc_open()
в PHP. Это позволит качественно отрендерить HTML в текст.
Пример использования Lynx:
$descriptorspec = array(
0 => array("pipe", "r"),
1 => array("pipe", "w"),
2 => array("pipe", "w")
);
$process = proc_open('lynx -dump -stdin', $descriptorspec, $pipes);
if (is_resource($process)) {
fwrite($pipes[0], $htmlContent);
fclose($pipes[0]);
$textContent = stream_get_contents($pipes[1]);
fclose($pipes[1]);
if ($errors = stream_get_contents($pipes[2])) {
throw new Exception("Ошибка при конвертации HTML: " . $errors);
}
fclose($pipes[2]);
proc_close($process);
echo $textContent;
}
Совет: Вам всегда следует проверять выходные данные Lynx с точки зрения безопасности, чтобы избежать нежелательных последствий.
Визуализация
Преобразование HTML в чистый текст с помощью PHP напоминает трансформацию детской раскладушки в простое текстовое издание. Вот как это выглядит:
До: [🌈🖼️📜(HTML)🎨🖌️]
После: [📄🔤📖(Чистый текст)🤓📚]
Превращение разноцветного калейдоскопа веб-страницы в стройность текстовой переписки:
🌐🖼️👀
/ \
/ 🔄 \
/_______\
📄🔠✉️
Мы отстраняем цветность и формы HTML-страницы, оставляя только её суть — основное содержание сообщения:
🖥️💻🖌️🌟: "Восхищайтесь моими шрифтами и цветами!"
📩📤✉️📝: "Объективность превыше всего, я — электронная почта, а не шоу мод!"
О Лицензии и вкладе в проекты
Работая с html2text, учтите, что он распространяется под Лицензией Eclipse Public. Это может вызвать вопросы совместимости с другими служебными скриптами и библиотеками.
Внося свой вклад в проекты с открытым исходным кодом, вы помогаете совершенствовать инструменты и делаете мир лучше. Присоединяйтесь к сообществу html2text и вносите свой вклад в развитие веб-стандартов.
Изучайте такие библиотеки, как php-variable-sanitizer
и useful-php-scripts
, чтобы расширить свои возможности по очистке кода. Не забывайте ознакомиться с лицензионными соглашениями перед использованием, особенно если вы занимаетесь коммерческими проектами.
Полезные материалы
- PHP: strip_tags – Руководство – полное руководство по использованию
strip_tags
. - PHP: htmlspecialchars – Руководство – превращение специальных символов в HTML-сущности.
- CommonMark для PHP – Markdown выполнены правильно – мощный парсер Markdown, который раскрывает весь его потенциал.
- GitHub – PHPMailer/PHPMailer: Превосходная библиотека для отправки электронной почты в PHP – обеспечивает быструю и достоверную отправку писем.
- GitHub – thephpleague/html-to-markdown: Преобразование HTML в Markdown с помощью PHP – грациозная конвертация HTML в Markdown.
- Медиатип – Википедия – энциклопедический контекст MIME-типов для лучшего понимания содержания электронной почты.