htmlentities
и htmlspecialchars
се използват за генериране на HTML изход който се изпраща до браузъра.
Подготвените оператори се използват за генериране/изпращане на заявки към машината за база данни .
И двете позволяват избягване на данни; но те не избягват за същото използване.
И така, не, подготвени изрази (за SQL заявки) не ви пречи да използвате правилно htmlspecialchars
/htmlentities
(за генериране на HTML)
Относно strip_tags
:ще премахне тагове от низ, където htmlspecialchars
ще ги трансформира в HTML обекти.
Тези две функции не правят едно и също нещо; трябва да изберете кой да използвате в зависимост от вашите нужди / какво искате да получите.
Например с това парче код:
$str = 'this is a <strong>test</strong>';
var_dump(strip_tags($str));
var_dump(htmlspecialchars($str));
Ще получите този вид изход:
string 'this is a test' (length=14)
string 'this is a <strong>test</strong>' (length=43)
В първия случай няма етикет; във втория, правилно избягали.
И с HTML изход:
$str = 'this is a <strong>test</strong>';
echo strip_tags($str);
echo '<br />';
echo htmlspecialchars($str);
Ще получите:
this is a test
this is a <strong>test</strong>
Кое от тях искате? Това е важният въпрос ;-)