Hallo,

Ik krijg simpelweg het volgende karakter maar niet weg met str_replace: ³ (kubieke meter)
Hoe doe je dit?

- Tim

<?php
str_replace("&sup3;", "", $string);
?>
Hey,

Bedankt voor je antwoord, maar het blijkt niet te werken helaas.

- Tim
Hmm waar haal je die m³ vandaan? Uit een database? En hoe ziet dat eruit in de broncode van de pagina?

En dit doe ik ook niet?

<?php
$string = "m³";
echo str_replace("³" , "", $string);
?>
Q S op 30/10/2012 15:07:36

Hmm waar haal je die m³ vandaan?


Ja, precies.

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 &
...

Dus ja ... de vraag is gesteld
Ik haal het uit een database. Ik heb nu handmatig alle ³-tjes er uit gehaald. Ik gok dat &sup3; wel moet werken, maar dat daar het probleem niet lag.

Bedankt voor je hulp!
Tim van Norde op 30/10/2012 15:18:39

... Ik gok dat &sup3; wel moet werken, ...


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.

Reageren