Avatar billede andrew Nybegynder
18. oktober 2008 - 22:12 Der er 10 kommentarer og
1 løsning

preg_replace uden casesensitive

Jeg er ved at lave en gæstebog og forsøger nu via min database og et script at fjerne bandeord.

Jeg ønsker derved at kunne rette ord fra database til noget andet, som også er registreret i dabasen.

Fx: shit => s**t, fuck = >f**k..

Men når jeg bruger preg_replace kan jeg kun finde og rette ord, der er med små bogstaver, når de er registreret med små bogstaver i databasen.

Kan det lade sig gøre at rette så det eksempelvis bliver således:

Sætning => DeT heR er Noget sHiT som de ikke OpdAgeR.
Rettet => DeT heR er Noget s**T som de ikke OpdAgeR.

Håber nogen kan hjælpe.
Avatar billede w13 Novice
18. oktober 2008 - 22:20 #1
Prøv at vise, hvad du gør nu.
Avatar billede w13 Novice
18. oktober 2008 - 22:21 #2
Se f.eks. denne, som jeg lige fandt i en kode, jeg engang har gemt:

preg_replace( '%\$module\[([a-z/-/.///]+)\]%i', parseinclude("$1"), $html );

Her indikerer i'et efter % vist, at der ikke tages højde for store og små bogstaver. Det er i hvert fald noget i den stil.
Avatar billede andrew Nybegynder
18. oktober 2008 - 22:34 #3
Her er min kode. Først hentes mine "badwords" ind fra database til array og dernæst sammenlignes de med min tmp_message:

        while ($row = mysql_fetch_array($query)) {
            $arr_badword[] = '/'.$row['badword'].'/';
            $arr_replace[] = $row['replace'];           
        }

        echo preg_replace($arr_badword, $arr_replace, $_POST['tmp_message']);
Avatar billede andrew Nybegynder
19. oktober 2008 - 00:00 #4
Jeg har prøvet at flette din kode ind i min, men jeg kan ikke få noget brugsomt ud af det :(
Avatar billede erikjacobsen Ekspert
19. oktober 2008 - 00:08 #5
while ($row = mysql_fetch_array($query)) {
            $arr_badword[] = '/'.$row['badword'].'/i';
            $arr_replace[] = $row['replace'];         
        }

        echo preg_replace($arr_badword, $arr_replace, $_POST['tmp_message']);
Avatar billede andrew Nybegynder
19. oktober 2008 - 00:13 #6
Det må være løsningen. :)

Utroligt at et enkelt 'i' kan få en voksen mand i knæ :)

Smid et svar begge to. Tak for hjælpen.
Avatar billede w13 Novice
19. oktober 2008 - 00:47 #7
:)
Avatar billede w13 Novice
19. oktober 2008 - 00:47 #8
;)
Avatar billede erikjacobsen Ekspert
19. oktober 2008 - 09:04 #9
Nej tak.
Avatar billede andrew Nybegynder
19. oktober 2008 - 14:08 #10
erikjacobsen=> Jeg takker mange gange for din hjælp. Fortsat god weekend til jer begge.
Avatar billede w13 Novice
19. oktober 2008 - 14:15 #11
Tak for points!
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