Avatar billede martin7410 Nybegynder
09. januar 2003 - 17:25 Der er 16 kommentarer og
1 løsning

Store og små bokstaver

hejsa,

Jeg har fået lavet mig en søgeside, hvor jeg i listen over søgeresultaterne bruger en str_replace ("$find","<b>$find</b>",$kildetekst);

Problemet er at str_replace er casesensitiv, i modsætning til selve søgning, dvs. at den ikke udskifter teksten, med mindre store og små bogstaver er ens.

Findes der en smart funktion i PHP? Ikke til at gøre store bogstaver små og omvendt, men til at kører en str_replace i non-casesensitiv-mode?

På forhånd tak,
Martin
Avatar billede jakoba Nybegynder
09. januar 2003 - 17:31 #1
http://dk.php.net/manual/en/function.eregi-replace.php

$nystreng = eregi_replace ("$find","<b>$find</b>",$kildetekst);

mvh JakobA
Avatar billede rzj Nybegynder
09. januar 2003 - 17:31 #2
As a stand in for the missing stri_replace, use strtoupper() or strtolower() on the string to be searched.

str_replace( strtoupper("tHiS"), "that", strtoupper("This tHis thIs thiS") )

Kilde: http://www.php.net/manual/en/function.str-replace.php

altså der findes ingen "smart" funktion - endnu...
Avatar billede jakoba Nybegynder
09. januar 2003 - 17:32 #3
var et svar.
Avatar billede schaefner Juniormester
09. januar 2003 - 17:32 #4
Brug eregi_replace:

eregi_replace ("$find","<b>$find</b>",$kildetekst);
Avatar billede rzj Nybegynder
09. januar 2003 - 17:33 #5
jakoba>> iflg. php.net er eregi_replace() "langsom" og man skal såvidt muligt undgå den, men hvor langsom er "langsom" ???
Avatar billede schaefner Juniormester
09. januar 2003 - 17:44 #6
rzj >> Hvor står det?
Avatar billede jakoba Nybegynder
09. januar 2003 - 17:45 #7
det har du ret i. dog er dette vel stedet hvor den er nødvendig :-)
Avatar billede whatever Nybegynder
09. januar 2003 - 17:47 #8
Man kan vel bruge preg_replace.

preg_replace("/$find/i","<b>$find</b>",$kildetekst);
Avatar billede whatever Nybegynder
09. januar 2003 - 17:51 #9
Prøv denne istedet:

preg_replace("/($find)/i","<b>\\1</b>",$kildetekst);

Ellers beholder den ikke cases rigtigt, når de fundne data erstattes.
Avatar billede martin7410 Nybegynder
09. januar 2003 - 17:58 #10
virker ikke rigtig. Den ændrer store bogstaver til små og omvendt.
Avatar billede whatever Nybegynder
09. januar 2003 - 18:00 #11
martin7410 > Hvilken en gør det?
Avatar billede martin7410 Nybegynder
09. januar 2003 - 18:07 #12
Både
preg_replace("/($find)/i","<b>\\1</b>",$kildetekst);
eregi_replace ("$find","<b>$find</b>",$kildetekst);
Jeg tror jeg accepterer, at det ikke kan lade sig gøre :-(
Avatar billede jakoba Nybegynder
09. januar 2003 - 18:19 #13
whatevers preg_replace burde søreme virke.
begge gør den med regular expressions. der kan være specialtegn i din $find streng der skal tages højde for
Avatar billede whatever Nybegynder
09. januar 2003 - 18:21 #14
Jeg har lavet en lille test-side: http://www.efusion.it/exp/303081.php

Og hvis jeg indtaster teksten:

Jeg har fået lavet mig en søgeside, hvor jeg i listen over søgeresultaterne bruger en str_replace

Og søgeordet er: jeg

virker det fint.
Avatar billede martin7410 Nybegynder
09. januar 2003 - 19:23 #15
Points til whatever, men lad mig lige se din "preg_replace"-linie.
Avatar billede whatever Nybegynder
09. januar 2003 - 19:28 #16
Jeg bruger stadig den samme:

$foo = preg_replace("/($find)/i","<b>\\1</b>",$kildetekst);
Avatar billede martin7410 Nybegynder
09. januar 2003 - 19:30 #17
takker! Det spiller også hos mig nu. Jeg ved ikke hvad jeg gjorde galt før.
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