Zde je obecné pravidlo.
Chcete, aby vaše proměnné byly čisté reprezentace dat. To znamená, že pokud se snažíte uložit příjmení někoho jménem "O'Brien", pak to rozhodně neděláte chci tyto:
O'Brien
O\'Brien
.. protože, no, tak se nejmenuje:nejsou v tom žádné ampersandy ani lomítka. Když vezmete tuto proměnnou a vypíšete ji v určitém kontextu (např.:vložíte do dotazu SQL nebo vytisknete na stránku HTML), že je, když jej upravíte.
$name = "O'Brien";
$sql = "SELECT * FROM people "
. "WHERE lastname = '" . mysql_real_escape_string($name) . "'";
$html = "<div>Last Name: " . htmlentities($name, ENT_QUOTES) . "</div>";
Už nikdy nechcete mít htmlentities
-zakódované řetězce uložené ve vaší databázi. Co se stane, když chcete vygenerovat CSV nebo PDF nebo cokoli, co není HTML?
Udržujte data čistá a unikněte pouze pro konkrétní kontext okamžiku.