Php преобразовать текст в html

Php преобразовать текст в html

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

Преобразование текста в HTML

Быстрое преобразование простого текста к формату web-браузера — весьма распространенная задача. В ее решении вам помогут функции, описанные в этом разделе.

nl2br()

Функция nl2br() заменяет все символы новой строки(
) эквивалентными конструкциями HTML
.

Синтаксис функции nl2br():

Символы новой строки могут быть как видимыми(то есть явно включенными в строку), так и невидимыми(например, введенными в редакторе). В следующем примере текстовая строка преобразуется в формат HTML посредством замены символов
разрывами строк:

При последующем выводе $html_recipe браузеру будет передан следующий текст в формате HTML:

htmlentities()

Функция htmlentities() преобразует символы в эквивалентные конструкции HTML.

Синтаксис функции htmlentities:

В следующем примере производится необходимая замена символов строки для вывода в браузере:

Функция htmlentities() в настоящее время работает только для символов кодировки ISO-8559-1(ISO-Latin-1). Кроме того, она не преобразует пробелы в , как следовало бы ожидать.

htmlspecialchars()

Функция htmlspecialchars() заменяет некоторые символы, имеющие особый смысл в контексте HTML, эквивалентными конструкциями HTML.

Синтаксис функции htmlspecialchars():

Функция htmlspecialchars() в настоящее время преобразует следующие символы:

В частности, эта функция позволяет предотвратить ввод пользователями разметки HTML в интерактивных web-приложениях(например, в электронных форумах). Ошибки, допущенные в разметке HTML, могут привести к тому, что вся страница будет формироваться неправильно. Впрочем, у этой задачи существует и более эффективное решение — полностью удалить теги из строки функцией strip_tags().

Следующий пример демонстрирует удаление потенциально опасных символов функцией htmlspeclalchars():

Если функция htmlspecialchars() используется в сочетании с nl2br(), то последнюю следует вызывать после htmlspecialchars(). В противном случае конструкции
, сгенерированные при вызове nl2br(), преобразуются в видимые символы.

get_html_translation_table()

Функция get_html_translation_table() обеспечивает удобные средства преобразования текста в эквиваленты HTML.

Синтаксис функции get_htrril_translation_table():

Читайте также:  Hse что это такое

Функция get_html_translation_table() возвращает одну из двух таблиц преобразования (определяется параметром таблица), используемых в работе стандартных функций htmlspecialchars() и htmlentities(). Возвращаемое значение может использоваться в сочетании с другой стандартной функцией, strtr()(см. далее), для преобразования текста в код HTML.

Параметр таблица принимает одно из двух значений:

В следующем примере функция get_html_translation_table() используется при преобразовании текста в код HTML:

Кстати, функция array_flip() позволяет провести преобразование текста в HTML в обратном направлении и восстановить исходный текст. Предположим, что вместо вывода результата strtr() в предыдущем примере мы присвоили его переменной $translated string.

В следующем примере исходный текст восстанавливается функцией array_flip():

strtr()

Функция strtr() транслирует строку, то есть заменяет в ней все символы, входящие в строку источник, соответствующими символами строки приемник.

Синтаксис функции strtr():

Если строки источник и приемник имеют разную длину, длинная строка усекается до размеров короткой строки.

Существует альтернативный синтаксис вызова strtr() с двумя параметрами; в этом случае второй параметр содержит ассоциативный массив, ключи которого соответствуют заменяемым подстрокам, а значения — заменяющим подстрокам. В следующем примере теги HTML заменяются XML-подобными конструкциями:

Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:

При выводе в echo отображается вместе с тегами. Как преобразовать его в html ?

"; echo $string; и никаких больше преобразований не происходит ? И из браузера эта страница просто открывается указанием ее url в адресной строке и какой нибудь ajax не используется ? – Mike 26 дек ’15 в 11:05

Я использую TinyMCE, чтобы разрешить минимальное форматирование текста на моем сайте. Из HTML, который был создан, я хотел бы преобразовать его в обычный текст для электронной почты. Я использую класс под названием html2text , но он действительно не поддерживает поддержку UTF-8, среди прочего. Тем не менее, мне кажется, что он сопоставляет определенные теги HTML с форматированием обычного текста – например, помещает подчеркивания вокруг текста, который ранее имел теги в HTML.

Читайте также:  Lenovo c260 драйвера windows 7

Кто-нибудь использует подобный подход для преобразования HTML в обычный текст в PHP? И если да: рекомендуете ли вы какие-либо сторонние классы, которые я могу использовать? Или как вам лучше всего решить эту проблему?

Используйте html2text (пример HTML для текста ), лицензированный в рамках публичной лицензии Eclipse . Он использует методы DOM PHP для загрузки из HTML, а затем выполняет итерацию по полученному DOM для извлечения простого текста. Применение:

Хотя он неполный, он открыт с открытым исходным кодом и приветствуется.

Проблемы с другими сценариями конвертации:

  • Поскольку html2text (GPL) не совместим с EPL.
  • Ссылка lkessler (атрибуция) несовместима с большинством лицензий с открытым исходным кодом.

Преобразование из HTML в текст с использованием DOMDocument является жизнеспособным решением. Рассмотрим HTML2Text, для которого требуется PHP5:

Что касается UTF-8, запись на странице «howto» гласит:

Собственная поддержка PHP для unicode довольно плохая, и она не всегда корректно обрабатывает utf-8. Хотя сценарий html2text использует безопасные для Unicode методы (без использования модуля mbstring), он не всегда может справиться с собственной обработкой кодировок PHP. PHP действительно не понимает юникод или кодировки, такие как utf-8, и использует базовую кодировку системы, которая, как правило, является одним из семейств ISO-8859. В результате, то, что может выглядеть вам как действительный символ в вашем текстовом редакторе, как в utf-8, так и в однобайтном, вполне может быть неверно истолковано PHP. Поэтому, даже если вы считаете, что кормили допустимого символа в html2text, вы, возможно, не будете.

Автор предлагает несколько подходов к решению этого вопроса и утверждает, что версия 2 HTML2Text (с использованием DOMDocument) поддерживает UTF-8.

Обратите внимание на ограничения для коммерческого использования.

Есть надежная функция strip_tags . Это не очень, хотя. Это будет только санировать. Вы могли бы объединить его с заменой строки, чтобы получить ваши причудливые подчеркивания.

Читайте также:  Wifi modem yota 4g lte

Вы можете использовать lynx с параметрами -stdin и -dump для достижения этого:

Вы можете проверить эту функцию

вот еще одно решение:

Я не нашел ни одного из существующих решений – простые HTML-письма для простых текстовых файлов.

Я открыл этот репозиторий, надеюсь, что это поможет кому-то. Лицензия MIT, кстати 🙂

Markdownify преобразует HTML в Markdown, систему форматирования текста, используемую на этом самом сайте.

Markdownify работал замечательно для меня! о чем нужно упомянуть: он отлично поддерживает utf-8, что было основной причиной, по которой я искал другое решение, чем html2text (что упоминалось ранее в этом потоке).

Я столкнулся с той же проблемой, что и OP, и попробовал некоторые решения из верхних ответов выше, не работал для моих сценариев. Посмотрите, почему в конце.

Вместо этого я нашел этот полезный скрипт, чтобы избежать путаницы, назовем его html2text_roundcube , доступным под GPL:

На самом деле это обновленная версия уже упомянутого скрипта – http://www.chuggnutt.com/html2text.php – обновлена ​​по почте RoundCube.

Почему html2text_roundcube оказался лучше других:

Скрипт http://www.chuggnutt.com/html2text.php не работает из коробки для случаев со специальными кодами / именами HTML (например, ä ) или неспаренными кавычками (например,

У скрипта https://github.com/soundasleep/html2text не было возможности скрывать или группировать ссылки в конце текста, делая обычную HTML-страницу раздутой со ссылками в текстовом формате; настройка кода для специального рассмотрения того, как делается преобразование, не так прямо, как простое редактирование массива в html2text_roundcube .

Я только что нашел функцию PHP «strip_tags ()» и ее работу в моем случае.

Я попытался преобразовать следующий HTML:

После применения функции strip_tags () у меня есть следующий вывод:

$text = "string 1
string 2

  • string 3
  • string 4

вывод
строка 1
строка 2
строка 3
строка 4
строка 5

Ссылка на основную публикацию
Adblock detector