htmlentities
a htmlspecialchars
se používají ke generování výstupu HTML který se odešle do prohlížeče.
Připravené výpisy se používají ke generování/odesílání dotazů do Databázového stroje .
Oba umožňují únik dat; ale neuniknou pro stejné použití.
Takže ne, připravené příkazy (pro SQL dotazy) nebrání vám správně používat htmlspecialchars
/htmlentities
(pro generování HTML)
O strip_tags
:odstraní značky z řetězce, kde htmlspecialchars
převede je na HTML entity.
Tyto dvě funkce nedělají totéž; měli byste si vybrat, který z nich použijete, podle svých potřeb / toho, co chcete získat.
Například s tímto kódem:
$str = 'this is a <strong>test</strong>';
var_dump(strip_tags($str));
var_dump(htmlspecialchars($str));
Získáte tento druh výstupu:
string 'this is a test' (length=14)
string 'this is a <strong>test</strong>' (length=43)
V prvním případě žádná značka; ve druhé, správně uniklé.
A s výstupem HTML:
$str = 'this is a <strong>test</strong>';
echo strip_tags($str);
echo '<br />';
echo htmlspecialchars($str);
Získáte:
this is a test
this is a <strong>test</strong>
Kterou z nich chcete? To je důležitá otázka -)