htmlentities
e htmlspecialchars
são usados para gerar a saída HTML que é enviado para o navegador. As instruções preparadas são usadas para gerar/enviar consultas ao mecanismo de banco de dados .
Ambos permitem o escape de dados; mas eles não escapam para o mesmo uso.
Então, não, instruções preparadas (para consultas SQL) não o impeça de usar corretamente
htmlspecialchars
/htmlentities
(para geração de HTML) Sobre
strip_tags
:ele removerá as tags de uma string, onde htmlspecialchars
irá transformá-los em entidades HTML.Essas duas funções não fazem a mesma coisa; você deve escolher qual usar dependendo de suas necessidades / do que deseja obter.
Por exemplo, com este pedaço de código:
$str = 'this is a <strong>test</strong>';
var_dump(strip_tags($str));
var_dump(htmlspecialchars($str));
Você obterá este tipo de saída:
string 'this is a test' (length=14)
string 'this is a <strong>test</strong>' (length=43)
No primeiro caso, sem tag; no segundo, devidamente escapados.
E, com uma saída HTML:
$str = 'this is a <strong>test</strong>';
echo strip_tags($str);
echo '<br />';
echo htmlspecialchars($str);
Você terá:
this is a test
this is a <strong>test</strong>
Qual desses você quer? Isso é a pergunta importante ;-)