2016-08-09 66 views
0

Ich speichere formatierte Zeichenfolge in der Datenbank mit PHP. Und Anzeige dieser Zeichenfolge in td der HTML-Tabelle. Mein Beispieltext ist wie-zeigt " in td anstelle von <

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

Wenn in td Anzeigen, Anzeigen es gerade diese Rohdaten statt formatierten Text. Ich habe die Quelle im Browser angesehen und unter Daten gefunden.

<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>` 

Das bedeutet, "mit &quot; ersetzt> mit &gt; usw. ersetzt.

Gibt es einen integrierten Ansatz in PHP dieses Szenario zu vermeiden und die Anzeige formatierte Text?

Danke vorzurücken

+0

Zeigen Sie uns den Code, den Sie für die Ausgabe verwenden – RiggsFolly

+0

Sie haben den HTML-String irgendwo codiert, Sie müssen ihn bei der Ausgabe entschlüsseln. Siehe auch ^. –

+0

Überprüfen Sie dies http://php.net/manual/en/function.htmmlspecialchars-decode.php – Jason

Antwort

0

Sie html_entity_decode() verwenden könnte;!

<?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

Eigentlich habe ich den Fehler beim Speichern der Daten gemacht. Ich verwendete unten Methoden, um Daten zuerst zu verarbeiten. // $ data = stripslashes ($ data); // $ data = htmlspecialchars ($ data); nach dem Kommentieren dieser beiden Methoden löste mein Problem

+0

Nein, hast du nicht ... ist ok, um die Datenbank Stiche so hinzuzufügen. Bitte lass die htmlspecialchars() und nachdem du den String aus der Datenbank bekommen hast benutze htmlspecialchars_decode() und alles wird gut. @mirzapinku –

+0

@ M.I. Es gibt keinen wirklichen Grund, 'htmlentities()' für Strings zu verwenden, die in die Datenbank gehen (wenn Sie * sowieso HTML-Daten speichern wollen); persönlich denke ich, es verursacht mehr Probleme als es löst. – CD001

+0

@ CD001 wenn er von einem Benutzer eine Eingabe als HTML erhält, sollte er nicht zumindest entkommen, bevor er es der DB hinzufügt? –

0

Zuerst codieren Sie nicht HTML-Sonderzeichen vor dem Speichern von Daten.
Sie sollten es besser tun kurz vor print/echo.

Ja, <?=h(...)?> ist ein Idiom. (<?=...?> ist die kurze Syntax von echo)

Oder müssen Sie zulassen, dass Benutzer roh HTML eingeben? Ohne Filterung oder Validierung bringt es uns die große Schwachstelle: Cross Site Scripting. Sie müssen HTML Purifier für diesen Zweck verwenden.