показ & quot; в тд вместо лт;

Я храню отформатированную строку в базе данных, используя PHP.
И отображение этой строки в тд таблицы HTML.
Мой образец текста похож на

<font color="#0033CC"><b>water </b>releasing<i> H<sub>3</sub>O<sup>+</sup></i> ions; </font>

При отображении в тд, он просто отображает эти необработанные данные вместо форматированного текста. Я просмотрел источник в браузере и нашел ниже данные.

<td>&lt;font color=&quot;#0033CC&quot;&gt;&lt;b&gt;water &lt;/b&gt;releasing&lt;i&gt; H&lt;sub&gt;3&lt;/sub&gt;O&lt;sup&gt;+&lt;/sup&gt;&lt;/i&gt; ions; &lt;/font&gt;</td>`

Это означает, что «заменяется &quot; > заменяется на &gt; и так далее.

Есть ли какой-либо встроенный подход в PHP, чтобы избежать этого сценария и отображения форматированного текста?

Заранее спасибо!

0

Решение

Вы могли бы использовать html_entity_decode ();

<?php
$orig = 'J\'ai "sorti" le <strong>chien</strong> tout à l\'heure';
$a = htmlentities($orig);
$b = html_entity_decode($a);

echo $a; // J'ai &quot;sorti&quot; le &lt;strong&gt;chien&lt;/strong&gt; tout &amp;agrave; l'heure
echo $b; // J'ai "sorti" le <strong>chien</strong> tout à l'heure

?>
0

Другие решения

На самом деле я сделал ошибку во время хранения данных.
Я использовал следующие методы для обработки данных в первую очередь.
// $ data = stripslashes ($ data);
// $ data = htmlspecialchars ($ data);
после комментирования эти два метода решили мою проблему

0

Во-первых, не кодируйте специальные символы HTML перед сохранением данных.
Тебе лучше сделать это как раз перед print/echo.

<?php

function h($str)
{
return htmlspecialchars($str, ENT_QUOTES, 'UTF-8');
}

$data = get_something_data_from_database();

/* More logic... */

?>
<!DOCTYPE html>
<title>Example</title>
<meta charset="UTF-8">
<div><?=h($data)?></div>

Да, <?=h(...)?> это идиома ( <?=...?> это короткий синтаксис echo)

Или вам нужно разрешить пользователям вводить необработанный HTML? Без фильтрации или проверки, это приносит нам основные уязвимость: Межсайтовый скриптинг. Вам нужно использовать Очиститель HTML для этого.

0
По вопросам рекламы [email protected]