Gå til innhold

Probblem med RegExp.


Anbefalte innlegg

Jeg holder på å lage et sensur script til en side og bruker da preg_replace() til å endre teksten.

 

Men jeg har et problem med RegExp som sluker nesten hele teksten.

 


<?php

function sensur($string)
{
$ulovlige = array(
   	'/f(.*?)u(.*?)c(.*?)k(.*?)/si'
   	);
   	
return preg_replace($ulovlige, 'SENSUR', $string);
}
?>

 

så hvis jeg skriver "sdfghskj fuck sflsw"

 

kommer sdSENSUR sflsw

 

noen som kan hjelpe meg med dette??

Endret av AlecTBM
Lenke til kommentar
Videoannonse
Annonse

At det ikke funker som planlagt er jo rimelig åpenbart. Det du sier er at den skal finne seg en f, u, c og k et eller annet sted så lenge de bare kommer i den rekkefølgen og erstatte det emd SENSUR. Sikker på at du ikke bare burde bruke str_replace og oppgi ordene du faktisk skal sensurere?

Lenke til kommentar

Det du eventuelt kan gjøre, er å si at brukeren kan skrive inn alle tegn bortsett fra f mellom f og u, og tilsvarende mellom de andre bokstavene. Da bør den kanskje ta akkurat det du vil?

 

Da bør du iallfall bli kvitt problemet med at den spiser opp hele teksten, bare du har en f i begynnelsen, men det er vel lettere å komme rundt et slikt søk.

Lenke til kommentar

Sakset fra Wikipedia:

[^ ]  Matches a single character that is not contained within the brackets. For example, [^abc] matches any character other than "a", "b", or "c". [^a-z] matches any single character that is not a lowercase letter. As above, these can be mixed.

 

Så om du f.eks. vil matche alt bortsett fra en f, kan du prøve med ([^f]*)

Lenke til kommentar
Det du eventuelt kan gjøre, er å si at brukeren kan skrive inn alle tegn bortsett fra f mellom f og u, og tilsvarende mellom de andre bokstavene. Da bør den kanskje ta akkurat det du vil?

 

Da bør du iallfall bli kvitt problemet med at den spiser opp hele teksten, bare du har en f i begynnelsen, men det er vel lettere å komme rundt et slikt søk.

7156233[/snapback]

 

Vil ikke dette gjøre at f.eks ordet "furu" blir sensurert? :p

 

Jeg stemmer for str_replace i et array hentet fra database..

 

Da kan dere administrere alle ordene ved hjelp av php script og legge til f.eks f-uck fuc k ol..

 

Men, sjønner virkelig ikke hvorfor?

Vist det er så viktig at folk ikke skriver slike ord i forum? gjestebok? whatever, er det ikke bare å skrive det og gjøre oppmerksom på at de som faktisk gjør det blir utestengt fra sia?

Endret av goggen90
Lenke til kommentar
:hmm: hva er regulært utrykk? :blush:

7158489[/snapback]

 

Den norske oversettelsen for 'regular expression', type formel som AlecTBM skrev et eksempel paa i foerste post.

 

Mer info: http://en.wikipedia.org/wiki/Regexp

 

Men anngaaende problemet ditt AlecTBM, har jeg desverre ikke mye fornuftig aa komme med. Eneste loesningen jeg har sett paa slike ting er, som goggen90 foreslaar, aa lage en usakelig lang liste over forskjellige varianter av ordene som skal sensureres.

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å
×
×
  • Opprett ny...