TheLensmann Skrevet 13. januar 2012 Skrevet 13. januar 2012 Hei. Jeg trenger litt hjelp. I et script jeg holder på å lage, må jeg filtrere ut alt bortsett fra bokstaver, tall og understrek. Jeg har fått dette til ved å bruke ereg_replace() funksjonen, men har et problem med å tillate æ, ø og å. Jeg har prøvd flere løsninger rundtom på nettet, og ingen av dem har fungert. Du kan se igjennom hvordan jeg bruker funksjonen. $string = ereg_replace("[^([:alnum:]æøåÆØÅ\_)]", "", $_POST['string']); echo $string; Om jeg skriver "abc<#$123>_æøå" får jeg "abc123_" tilbake, selv om jeg ber scriptet ikke fjerne æ, ø og å. Har prøvd ulike løsninger på forskjellige forumer på nettet, men som sagt så har de ikke hjulpet meg. Dersom jeg echoer $string uten ereg_replace() vises æ, ø og å helt normalt. Mvh, Erik
Milktea Skrevet 14. januar 2012 Skrevet 14. januar 2012 Noen spesiell grunn til at du bruker ereg_replace i stedet for preg_replace? ereg-funksjonene er ikke lenger anbefalt. Når det er sagt fungerer følgende helt fint for meg: $s = "abc<#$123>_æøå"; $string = ereg_replace("[^([:alnum:]æøåÆØÅ\_)]", "", $s); var_dump($string); // string(13) "abc123_æøå" Output her var det du ville fram til, ikke sant? Du kan jo se om preg_replace er mer samarbeidsvillig: $s = "abc<#$123>_æøå"; $string = preg_replace("/[^0-9a-zA-ZæøåÆØÅ_]/", "", $s); var_dump($string); Hvis ikke kan du prøve å lagre PHP-dokumentet i UTF-8 og se om dette virker: mb_internal_encoding('UTF-8'); $s = "abc<#$123>_æøå"; $string = preg_replace("/[^0-9a-zA-ZæøåÆØÅ_]/u", "", $s); var_dump($string); Alt over virker hos meg, men char-encoding er ikke alltid like greit 1
TheLensmann Skrevet 14. januar 2012 Forfatter Skrevet 14. januar 2012 (endret) Funker fortsatt ikke.. Går det an å endre charset for PHP globalt? Edit: Når jeg bruker var_dump() får jeg "æøå" i output. Når jeg echoer med "/u" på slutten får jeg ingen output, og når jeg echoer uten "/u", får jeg samme output som før, uten æ, ø og å. Endret 14. januar 2012 av ErikDjupvik
FraXinuS Skrevet 14. januar 2012 Skrevet 14. januar 2012 Problemet er mest sannsynlig at $_POST['string'] og filen koden er lagret i ikke bruker samme encoding. Sjekk hvilken encoding du lagrer filene dine med og sett samme encoding på responsen din med: header('Content-Type: text/html; charset=utf-8'); Bytt ut utf-8 med den encodingen du bruker. 1
TheLensmann Skrevet 14. januar 2012 Forfatter Skrevet 14. januar 2012 (endret) Jeg bruker et program kalt "Espresso" på Mac'en min, og får ikke noe valg i hvilket tegnsett jeg bruker når jeg lagrer. Skal prøve header though. Edit: Header-metoden reddet meg. Tusen, millioner takk! Endret 14. januar 2012 av ErikDjupvik
Gjest Skrevet 14. januar 2012 Skrevet 14. januar 2012 Ereg_Replace er DEPRECATED per PHP 5.3.0, det vil si den vil bli fjernet og ikke anbefalt å bruke Du skal heller bruke: preg_replace
TheLensmann Skrevet 14. januar 2012 Forfatter Skrevet 14. januar 2012 Skal gjøre det, takk for hjelpen alle sammen
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå