TheLensmann Skrevet 13. januar 2012 Del 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 Lenke til kommentar
Milktea Skrevet 14. januar 2012 Del 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 Lenke til kommentar
TheLensmann Skrevet 14. januar 2012 Forfatter Del 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 Lenke til kommentar
FraXinuS Skrevet 14. januar 2012 Del 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 Lenke til kommentar
TheLensmann Skrevet 14. januar 2012 Forfatter Del 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 Lenke til kommentar
Gjest Skrevet 14. januar 2012 Del 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 Lenke til kommentar
TheLensmann Skrevet 14. januar 2012 Forfatter Del Skrevet 14. januar 2012 Skal gjøre det, takk for hjelpen alle sammen Lenke til kommentar
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å