Как использовать php echo без кавычек для отображения HTML-кода?

#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