Avatar billede www.denn.dk Nybegynder
06. oktober 2008 - 15:32 Der er 17 kommentarer og
1 løsning

preg_match problem

Hej alle sammen.

Jeg sidder og roder med et preg_match problem.

Min pattern er således:
$pattern = "/$searchstring/i";

Jeg har nu en string jeg gerne vil finde ordet PØLSE i. Det giver så følgende pattern og string:
string:  "Lej en pølsevogn! Vi kan også sørge for det nødvendige - alt lige fra frankfurtere til sennepen!" string(8)

Min pattern er så: "/PØLSE/i"

Dette returnere 0 mens hvis jeg søger efter "pølse" så min pattern bliver "/pølse/i" retunere 1. Desunden retunere "/Pølse/i"; også 1.

Så der et åbenbart et problem med PØLSE - jeg vil meget gerne have dette fikset. Er der nogen der kan hjælpe?

Det hele bliver benytter her:
if (preg_match($pattern, "$row_2[beskrivelse]")) {
Avatar billede www.denn.dk Nybegynder
06. oktober 2008 - 15:34 #1
Ordet PøLsE retunere også 1.
Avatar billede olebole Juniormester
06. oktober 2008 - 15:42 #2
<ole>

- så det handler altså om bogstavet 'Ø' kontra 'ø' - hvorfor man kunne mistænke dokumentets tegnsæt for at være skurken. Hvad bruger du/din server som tegnsæt?  =)

/mvh
</bole>
Avatar billede www.denn.dk Nybegynder
06. oktober 2008 - 15:49 #3
Hej olebole.

Jeg kan se at selve siden hvor der bliver udskrevet på er ISO-8859-1 - men hvad selve filen er kan jeg ikke lige finde. Hvor finder jeg det?

Er der nogen måde i Windows hvor man kan finde en fils encodning?
Avatar billede w13 Novice
06. oktober 2008 - 15:52 #4
Åbn filen i Notesblok, vælg Gem som, aflæs encoding der. =)
Avatar billede www.denn.dk Nybegynder
06. oktober 2008 - 15:55 #5
Der står ANSI
Avatar billede w13 Novice
06. oktober 2008 - 16:06 #6
Det er også ISO-8859-1.
Avatar billede www.denn.dk Nybegynder
06. oktober 2008 - 16:09 #7
Så er det vel fint?
Avatar billede w13 Novice
06. oktober 2008 - 16:11 #8
Tjaeh, det kommer også lidt an på, hvor du har din streng fra.
Avatar billede www.denn.dk Nybegynder
06. oktober 2008 - 16:12 #9
MySQL
Avatar billede w13 Novice
06. oktober 2008 - 16:19 #10
Så skal din MySQL også være i samme tegnsæt. (Og hvis indholdet er sat ind, da der var et andet tegnsæt, skal det vist skrives ind igen.)
Avatar billede www.denn.dk Nybegynder
06. oktober 2008 - 16:27 #11
Databasen er med latin1_general_ci som charset - og det er alt sammen sat ind via en ISO-8859-1 encoding.
Avatar billede w13 Novice
06. oktober 2008 - 16:37 #12
Prøv lige allerførst at køre din string igennem utf8_encode() inden du bruger preg_match og se, om det hjælper. Og ellers utf8_decode().
Avatar billede olebole Juniormester
06. oktober 2008 - 16:42 #13
Det skal være utf8_decode. Preg-funktionerne har svært ved at håndtere utf-8 kodede tegn - og det går slet ikke, hvis der bliver brugt forskellige tegnsæt  =)
Avatar billede www.denn.dk Nybegynder
06. oktober 2008 - 21:25 #14
Jeg har nu prøvet både decode og encode - det virker desværre ikke :\
Avatar billede mcardle Nybegynder
06. oktober 2008 - 22:09 #15
Hvis du henter ud med ajax, skal du også have en header på den side du henter ud fra.

header('Content-Type: text/html; charset=ISO-8859-1');

//mcardle
Avatar billede www.denn.dk Nybegynder
07. oktober 2008 - 06:46 #16
Det bliver ikke hentet ud med Ajax - men kunne selvfølgelig prøve at lave den header i min functions.php fil.
Avatar billede www.denn.dk Nybegynder
07. oktober 2008 - 06:48 #17
Det gjorde desværre hellere ikke tricket.
Avatar billede www.denn.dk Nybegynder
13. november 2008 - 16:29 #18
Lukker
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