#php #html #decoding
#php #HTML #декодирование
Вопрос:
Я пытаюсь распечатать некоторый HTML-код, который не хранится в виде простой строки, поэтому мне нужно декодировать его перед повторением, моя проблема в том, что когда я повторяю декодированное значение, я продолжаю получать эти кавычки, и они портят вывод, вот как это выглядит:
<div>
"<h1 class="ql-align-center">TEST</h1>"
</div>
итак, из-за этих кавычек » h1 не формируется, и он печатается как текст, а не как HTML-код.
Итак, мне интересно, можно ли печатать как html-код, означающий отсутствие кавычек «»?
это php-код, который генерирует его следующим образом
<?php echo html_entity_decode($singleEmail['camp_desc'], ENT_NOQUOTES, 'UTF-8'); ?>
также это значение базы данных ‘camp_desc’, которое должно быть закодировано перед печатью
amp;amp;<h1 class=amp;amp;quot;ql-align-centeramp;amp;quot;amp;amp;>TESTamp;amp;</h1amp;amp;>
и вывод php-кода выше для encode является
<h1 class="ql-align-center">TEST</h1>
но поскольку я использую echo для печати …. php заключает его в кавычки, и <h1>
тег становится обычным текстом вместо элемента html
Комментарии:
1. Пожалуйста, покажите нам PHP-код, который генерирует этот вывод — мы не можем помочь вам решить проблему, если мы не видим код, который ее вызывает!
2. @FluffyKitten здравствуйте, извините, что я редактировал с помощью php-кода
3. И можете ли вы также показать нам значение, над которым оно работает? Добавьте это в код перед echo и отредактируйте свой вопрос, чтобы включить выходные данные:
var_dump($singleEmail['camp_desc']);
4. @FluffyKitten привет, извини, я снова отредактировал, добавив больше информации!
Ответ №1:
Я не знаю, откуда берутся кавычки — код, который у вас есть в вашем вопросе, не добавляет дополнительных кавычек, поэтому они берутся откуда-то еще.
Однако, если вы хотите, чтобы строка HTML отображалась как HTML вместо отображения тегов в виде текста, вы можете сделать следующее:
Начиная с этого значения в вашей переменной:
amp;amp;<h1 class=amp;amp;quot;ql-align-centeramp;amp;quot;amp;amp;>TESTamp;amp;</h1amp;amp;>
отображается как: <h1 class=»ql-align-center»>TEST</h1>
…вы можете использовать html_entity_decode
для его декодирования, что даст нам следующий вывод, т. Е. преобразует его в строку, которая будет отображаться как обычный текст HTML при повторении:
amp;<h1 class=amp;quot;ql-align-centeramp;quot;amp;>TESTamp;</h1amp;>
отображается как: <h1 class=»ql-align-center»>ТЕСТ</h1>
…теперь нам нужно декодировать это, чтобы превратить его в HTML-элементы, которые будут отображаться как тег H1 на странице:
<h1 class="ql-align-center">TEST</h1>
отображается как: TEST
Код: Для этого вам нужно вызвать html_entity_decode
дважды, прежде чем он отобразит строку в виде HTML-элементов:
<?php
$htmlstr = html_entity_decode($singleEmail['camp_desc'], ENT_QUOTES, 'UTF-8');
echo html_entity_decode($htmlstr, ENT_NOQUOTES, 'UTF-8');
?>
Комментарии:
1. Спасибо, чувак, это работает, я бы никогда не подумал, что мне нужно использовать это дважды xD,
2. Я знаю! Именно когда я
var_dump
редактировал значения, я увидел, что происходит. PS, горе человеку, а не человеку 🙂
Ответ №2:
Что, если вы попытаетесь заменить эти кавычки при их повторении?
Например, вы создаете регулярное выражение для его замены или создаете функцию, которая заменяет две нужные части, например str_replace('”<', '<', $yourDecodedHtml)
, str_replace('>”', '>', $yourDecodedHtml)
Комментарии:
1. Эй, я пробовал, это не работает.. Я думаю, это потому, что echo заключает строку в кавычки («»), превращая тег <h1> в обычный текст вместо элемента html