Gå til innhold

[Løst] ereg_replace() ignorerer æ, ø og å


Anbefalte innlegg

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
Videoannonse
Annonse

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 :no:

  • Liker 1
Lenke til kommentar

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 av ErikDjupvik
Lenke til kommentar

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.

  • Liker 1
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...