PHP - htmlspecialchars
Třída
Metoda - htmlspecialchars
(PHP 4, PHP 5, PHP 7)
Klíčová funkce, která převede speciální znaky v textu na HTML entity.
Mezi speciální znaky patří: &
, '
,
"
, <
, >
. Tato
funkce je velmi důležitá a měla by být použita při výpisu většiny
proměnných, aby nedošlo k narušení HTML dokumentu znaky od uživatele,
případně aby nedošlo rovnou k XSS útoku.
Funkce nepřeloží všechny znaky, pro které existují entity, jen ty
základní. Pokud potřebujete převést všechny (což většinou ne, protože
dojde např. k rozbití diakritiky), použijte funkci
htmlentities()
.
Procedurální
- function htmlspecialchars (string $string, int $flags = ENT_COMPAT | ENT_HTML401, string $encoding = ini_get("default_charset"), bool $double_encode = true) : string
Parametry
Název | Datový typ | Výchozí hodnota | Popis | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
$string | string | Řetězec pro převod. | |||||||||||||||||||||
$flags | int | ENT_COMPAT | ENT_HTML401 | Jako druhý parametr můžeme uvést tzv. flagy. Jedná se o konstanty
měnící chování funkce. Konstanty můžeme spojovat pomocí
| ||||||||||||||||||||
$encoding | string | ini_get("default_charset") | Nepovinný parametr je kódování, nejčastěji | ||||||||||||||||||||
$double_encode | bool | true | Pokud parametr obsahuje hodnotu FALSE, existující HTML entity již nebudou převedeny. V opačném případě se každá entita převede. |
Návratové hodnoty
Vrací: string
Převedený řetězec.
Příklady
<?php
$s = 'Vítej ve fóru, tvůj problém vyřeší tag </body>, nemáš totiž ukončené body.';
echo htmlspecialchars($s);
Bez prohnání výstupu funkcí htmlspecialchars()
by
samozřejmě došlo k vložení tagu </body>
do stránky a
tím k jejímu narušení.
Názorně si ještě ukažme, co se stane, pokud změníme hodnotu posledního parametru:
<?php
echo htmlspecialchars('Entita < se používá pro menší než');
echo ('<br />');
echo htmlspecialchars('Entita < se používá pro menší než', ENT_COMPAT | ENT_HTML401, 'UTF-8', false);
Jak můžeme vidět, v prvním případě byla entita opět zkonvertována, v druhém zůstala zachovaná.
Související manuály
- function htmlspecialchars_decode (string $string, int $flags = ENT_COMPAT | ENT_HTML401) : string
- function nl2br (string $string, bool $is_xhtml = true) : string
- function strip_tags (string $str, string $allowable_tags) : string