Avatar billede ladbye Nybegynder
24. november 2011 - 15:50 Der er 14 kommentarer

Preg_match med ÆØÅ

Hej Alle.

Jeg kan ikke lige greje det her problem, og håber at en af jer kan hjælpe mig med en løsning.

Jeg har en databasetabel med ord i. Det kan eksempelvis være "kage" og "æble". Jeg har derefter en titel som kan være eksempelvis:

$title = 'æble'; eller $title = 'kage';

Når jeg laver følgende preg_match, virker det ikke med æble, men kun med kage:

$word = 'æble';
preg_match('/\b('.$word.')\b/i, $title);

Hvis jeg så fjerner word boundary (\b) fra ovenstående, så virker det fint med "æble". Mit umiddelbare bud er, at det måske er et tegnsætproblem, men jeg er ikke sikker.

Hvis der er brug for mere information, skal I endelig bare sige til.

På forhånd tak!

/Ladbye
Avatar billede olebole Juniormester
24. november 2011 - 16:14 #1
<ole>

Det lyder som en lidt bedaget PHP version. Du kan, hvis ikke den er alt for gammel, prøve med u-modifier'en:

preg_match('/\b('.$word.')\b'/ui, $title);

- og husk alle gåseøjne. Jeg går udfra, du har dem i din rigtige kode  *o)
/mvh
</bole>
Avatar billede ladbye Nybegynder
25. november 2011 - 10:37 #2
Hej Ole,

Jeg har prøvet dit forslag og det virker desværre ikke. Det gør inden forskel.
Jeg kører heller ikke med nogen speciel gammel version af PHP. Det er en nyinstalleret Debian Squeeze 64 bit installation med Apache og PHP fra Aptitude af.

Dette er egentlig en udspringer af følgende spørgsmål:

http://www.eksperten.dk/spm/949656

- Spørgsmålet er, om det oprindelige spørgsmål virker på flere forskellige locales, så at sige.
Avatar billede olebole Juniormester
25. november 2011 - 17:32 #3
Hvilken encoding bruger du?
Avatar billede ladbye Nybegynder
28. november 2011 - 16:52 #4
Alt kører UTF-8. Dette i forbindelse til databasen, filen er encoded som UTF osv.
Avatar billede olebole Juniormester
28. november 2011 - 18:09 #5
Det lyder overordentlig sært! Kan du ikke lige prøve at skrive dette i et dokument og linke til det, så jeg kan se, hvad der sker - og hvordan PHP er sat op?

<?php
$word = 'øl';
$title = 'Ål, øl og røreæg.';
$res = preg_match('/\b('.$word.')\b/ui', $title);
print 'Match: '.$res.'<hr>';
print phpinfo();
?>
Avatar billede ladbye Nybegynder
05. december 2011 - 19:42 #6
Hej Ole,

Hermed lagt op:

http://athene.bownty.com/test.php

Den returnerer 0.
Avatar billede olebole Juniormester
05. december 2011 - 23:40 #7
Det anede mig. Modifieren u ændrer karakter i PHP 4.3.5 og bliver utf-8 kompatibel. Din version er 5.3.3 - så du har ikke utf-8 understøttelse i preg-funktionerne.

Alternativt kan du kikke på ereg-funktionerne, men vær opmærksom på, at de har en lidt anden syntaks
Avatar billede ladbye Nybegynder
07. december 2011 - 14:17 #8
Hej Ole,

Hvad ville så være smartest? - Jeg vil gerne køre et "så default" setup som muligt.

Ved du hvordan jeg laver tilsvarende med ereg funktionerne?
Avatar billede olebole Juniormester
07. december 2011 - 17:35 #9
Hmmm ... jeg ved sq ikke lige, hvad jeg tænkte på, da jeg skrev mit forrige indlæg ...?!??!!! Din version burde jo netop understøtte utf-8  =)

Jeg har på fornemmelsen, du - selvom du tror noget andet - ikke arbejder med utf-8. Prøv lige at skrive dette i stedet, og upload resultatet:


<?php
error_reporting(E_ALL);
$word = 'øl';
$title = 'Ål, øl og røreæg.';
print $title.'<hr>';
$res = preg_match('/\b('.$word.')\b/ui', $title);
print 'Match: '.$res;
?>

Avatar billede ladbye Nybegynder
09. december 2011 - 13:01 #10
Hej Ole,

Så er den lagt op:

http://athene.bownty.com/test.php
Avatar billede ladbye Nybegynder
09. december 2011 - 13:20 #11
Hej Ole,

Jeg fandt det her indlæg. Kunne det have relevans:

http://www.php.net/manual/fr/function.preg-match-all.php#86366
Avatar billede olebole Juniormester
09. december 2011 - 17:47 #12
Nej, det er en helt anden situation. Jeg kan ikke forklare, hvad der sker hos dig. Det burde virke - og det virker fint hos mig. Desværre har jeg ingen gode bud  :o|
Avatar billede ladbye Nybegynder
12. december 2011 - 09:46 #13
Hej Ole,

Kan det være noget med det locale's som jeg kører på maskinen?

Jeg kan f.eks. prøve at sætte den til en.US-UFT-8 ?
Avatar billede olebole Juniormester
12. december 2011 - 16:52 #14
Jeg er umiddelbart løbet 'tør', men det kunne da være et forsøg værd  =)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester