Преобразование HTML в текст в PHP для email с UTF-8

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Если вам нужно преобразовать HTML в чистый текст в PHP, просто примените функцию strip_tags(), которая эффективно уберёт HTML-разметку. Полученный таким образом текст будет идеален для отправки по электронной почте.

Пример кода:

php
Скопировать код
$plainText = strip_tags("<h1>Заголовок</h1><p>Сообщение</p>");
// Результат: Заголовок Сообщение – быстро и наглядно!

Если нужно сохранить переносы строк, перед удалением тегов замените <br> на \n.

Кинга Идем в IT: пошаговый план для смены профессии

Сохраняем форматирование с помощью html2text

Для конвертации HTML с сохранением форматирования используйте библиотеку html2text. Она преобразует HTML в текст, сохраняя ключевые элементы стиля.

Установка через Composer:

sh
Скопировать код
composer require html2text/html2text

Пример кода:

php
Скопировать код
use \Html2Text\Html2Text;

$html = "<h1>Заголовок</h1><p>Сообщение</p>";
$text = new Html2Text($html);
// Результат: 'Заголовок\n\nСообщение'. HTML-теги спокойно уходят в отпуск!

Работаем с символами UTF-8

При решении задач, связанных с символами UTF-8, стандартные методы PHP могут быть неэффективными. В этих случаях используйте функцию mb_convert_encoding(), чтобы избежать проблем при удалении тегов.

php
Скопировать код
$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:

php
Скопировать код
$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 напоминает трансформацию детской раскладушки в простое текстовое издание. Вот как это выглядит:

Markdown
Скопировать код
До: [🌈🖼️📜(HTML)🎨🖌️]
После: [📄🔤📖(Чистый текст)🤓📚]

Превращение разноцветного калейдоскопа веб-страницы в стройность текстовой переписки:

plaintext
Скопировать код
     🌐🖼️👀      
      /   \      
     /  🔄  \     
    /_______\    
   📄🔠✉️

Мы отстраняем цветность и формы HTML-страницы, оставляя только её суть — основное содержание сообщения:

Markdown
Скопировать код
🖥️💻🖌️🌟: "Восхищайтесь моими шрифтами и цветами!"
📩📤✉️📝: "Объективность превыше всего, я — электронная почта, а не шоу мод!"

О Лицензии и вкладе в проекты

Работая с html2text, учтите, что он распространяется под Лицензией Eclipse Public. Это может вызвать вопросы совместимости с другими служебными скриптами и библиотеками.

Внося свой вклад в проекты с открытым исходным кодом, вы помогаете совершенствовать инструменты и делаете мир лучше. Присоединяйтесь к сообществу html2text и вносите свой вклад в развитие веб-стандартов.

Изучайте такие библиотеки, как php-variable-sanitizer и useful-php-scripts, чтобы расширить свои возможности по очистке кода. Не забывайте ознакомиться с лицензионными соглашениями перед использованием, особенно если вы занимаетесь коммерческими проектами.

Полезные материалы

  1. PHP: strip_tags – Руководство – полное руководство по использованию strip_tags.
  2. PHP: htmlspecialchars – Руководство – превращение специальных символов в HTML-сущности.
  3. CommonMark для PHP – Markdown выполнены правильномощный парсер Markdown, который раскрывает весь его потенциал.
  4. GitHub – PHPMailer/PHPMailer: Превосходная библиотека для отправки электронной почты в PHP – обеспечивает быструю и достоверную отправку писем.
  5. GitHub – thephpleague/html-to-markdown: Преобразование HTML в Markdown с помощью PHP – грациозная конвертация HTML в Markdown.
  6. Медиатип – Википедия – энциклопедический контекст MIME-типов для лучшего понимания содержания электронной почты.