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?