Avatar ·

Qual é a diferença entre htmlentities() e htmlspecialchars() em PHP?

Olá, colegas! Sou novo em PHP e estou tentando entender a saída segura de dados em HTML. Encontrei duas funções: `htmlentities()` e `htmlspecialchars()`. Ambas, pelo que entendi, convertem caracteres especiais em entidades HTML para evitar ataques XSS e exibição incorreta. Mas estou confuso: quando usar qual? Veja meu código. Tenho um formulário de feedback simples: ```php $name = $_POST['name']; // exemplo: John "The Hacker" Doe $comment = $_POST['comment']; // exemplo: ``` Quero exibir esses dados na página. Se eu usar `htmlspecialchars()`, os caracteres `<` e `>` são convertidos em `<` e `>`, e as aspas em `"`. Mas li que `htmlentities()` faz o mesmo, além de converter todos os caracteres que possuem entidades HTML, por exemplo, o símbolo de moeda € se transforma em `€`. Pergunta: por que então precisamos de `htmlspecialchars()`, se `htmlentities()` faz mais? Existem casos em que `htmlentities()` pode causar problemas?