NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.

htmlspecialchars - Český PHP manuál

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.

Parametry

String pro převod. Jako druhý parametr můžeme uvést tzv. flagy. Jedná se o konstanty měnící chování funkce. Konstanty můžeme spojovat pomocí |. Jejich seznam je následující:

ENT_COMPAT Převede uvozovky a apostrofy ponechá.
ENT_QUOTES Převede uvozovky i apostrofy.
ENT_NOQUOTES Ponechá uvozovky i apostrofy.
ENT_IGNORE Vymaže neplatné znaky na pozadí. Toto nastavení je nebezpečné, protože tak může dojít k XSS.
ENT_SUBSTITUTE Nahradí neplatné znaky na pozadí znakem s otazníkem.
ENT_DISALLOWED Nahradí znaky, které jsou normálně platné, ale nejsou platné pro daný doctype znakem s otazníkem.
ENT_HTML401 Zpracovává kód jako HTML 4.01.
ENT_XML1 Zpracovává kód jako XML 1.
ENT_XHTML Zpracovává kód jako XHTML.
ENT_HTML5 Zpracovává kód jako HTML 5.

Výchozí nastavení bez uvedení parametrů je ENT_COMPAT | ENT_HTML401.

Další nepovinný parametr je kódování, nejčastěji 'UTF-8'. Pozor, před PHP 5.4 je výchozí ISO-8859-1, od 5.4 je to UTF-8.

Příklad

<?php
$s = 'Vítej ve fóru, tvůj problém vyřeší tag </body>, nemáš totiž ukončené body.';
echo htmlspecialchars($s);

Výstup:

Vítej ve fóru, tvůj problém vyřeší tag &lt;/body&gt;, nemáš totiž ukončené body.

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í.

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.


 

Všechny články v sekci
Textové řetězce - Český PHP manuál
Článek pro vás napsal David Hartinger
Avatar
David je zakladatelem ITnetwork a programování se profesionálně věnuje 15 let. Má rád Nirvanu, nemovitosti a svobodu podnikání.
Unicorn university David se informační technologie naučil na Unicorn University - prestižní soukromé vysoké škole IT a ekonomie.
Aktivity