Stel: die ³ is gepost vanuit een textarea, door een gebruiker. Als de pagina, waarin het formulier staat, in UNICODE staat (2 byte per karakter), wordt dat teken opgeslagen in UNICODE.
Dan moet je misschien dit doen:
<?php
str_replace(utf8_encode('³'), "", $string);
?>
Als het via een url is doorgegeven, is het met urlencode gecodeerd, dan moet je misschien dit doen
<?php
str_replace(urlencode('³'), "", $string);
?>
Het kan ook zijn dat dat karakter door htmlentities gepasseerd is; dan heb je dat karakter met &
...
Goed mogelijk. Het zou echter niet mogen.
Maar dat hangt dus volledig af van de verwerking van het formulier, waar die ³ is gepost.
Je moet (in principe) altijd proberen om data van de gebruiker ongefilterd in de database te steken. Enkel escapen is noodzakelijk.
Functies als htmlentities hoor je enkel te gebruiken wanneer je de gegevens op het scherm toont.
Dus: htmlentities heb je nooit nodig als je met INSERT of UPDATE bezig bent; wel bij SELECT.