Avatar billede Slettet bruger
21. oktober 2000 - 02:43 Der er 12 kommentarer og
1 løsning

Beskedvæg med \"badword\" filter..

Hejsa,

Jeg sidder lige og roder med en beskedvæg i php, dog sidder jeg lidt fast i øjeblikket - så jeg håber der er nogle der kan hjælpe mig.

Jeg har lavet en form med et input felt og en send knap. Det virker også helt ok. Jeg har tilføjet følgende til min kode :

$str = ereg_replace(\'fuck\',\"[censored]\",$string);

Og det virker jo også, hvis en bruger vil tilføje fuck, bliver det lavet om til [censored]

Det jeg ønsker er at skrive alle de \"badwords\" ind i en tekstfil, og så undersøg dem en for en. Jeg kunne jo lave en masse replace sætninger, men jeg vil nu heller ha\' dem i en fil.

Please hjælp mig med noget sourcecode, da jeg sidder helt fast. I tekstfilen skal der bare være et ord for hver linie.
Avatar billede gonzzo Nybegynder
21. oktober 2000 - 06:43 #1
$filnavn = \"sti/til/din/fil.txt\";
$fp = fopen($filnavn, r);
$array = $fp;
while($str = ereg_replace(\'$array\',\"[censored]\",$string);


det skal nok være noget i den stil..

dog har jeg ikke teste dette...
Avatar billede Slettet bruger
21. oktober 2000 - 12:55 #2
Det virker ikke helt... der kommer denne fejl frem :

Parse error: parse error in index.php3 on line 50

Det er følgende sætning den melder fejl på :

while($string = ereg_replace(\'$array\',\"[censored]\",$string);

Og den kan jeg ikke helt gennemskue....
Avatar billede Slettet bruger
21. oktober 2000 - 14:08 #3
while($string = ereg_replace($array,\"[censored]\",$string));
Avatar billede Slettet bruger
21. oktober 2000 - 14:10 #4
Hvis de ikke virker, så prøv med \"file\" funktionen, istedet for fopen.
Avatar billede jd Nybegynder
21. oktober 2000 - 14:11 #5
christian-t-> Du er ikke helt død? :O)
Avatar billede andreas Nybegynder
21. oktober 2000 - 15:19 #6
$string = \"Dette er variablen med beskederne.\";

$fil = file(\"sti/til/fil.txt\");

for($i = 0; $i < count($fil); $i++) {
if (eregi($fil[$i],$string)) {
$string = eregi_replace($fil[$i],\"\", $string);
}
}
Avatar billede Slettet bruger
21. oktober 2000 - 17:17 #7
jd -> hehe, nej ikke helt ;-)
Avatar billede Slettet bruger
21. oktober 2000 - 22:35 #8
Arhhhhh..... du bliver jeg snart tosset :) Det vil bare ikke virke. Her er lidt af min kode, jeg har brugt koden fra andreas, da det virker en lille smule.

<? 
$wall    = \"wall.txt\";
$maxtags = 64;

function write_wall($besked, $wall, $maxtags)
{
  $otag = @file($wall);

  $fil = file(\"bad.txt\", r);
  for($i = 0; $i < count($fil); $i++) {
  if (eregi($fil[$i],$besked)) {
  $besked = eregi_replace($fil[$i],\"[censored]\", $besked);
  }
  }

$ftag .=  \"<tr><td align=\'right\'><td colspan=2>$besked</td></tr>\\n\";
     
  for( $i=0 ; $i<$maxtags-1 ; $i++ )
  $ftag .= $otag[$i];
  $fp = fopen($wall,  \"w\");
  fwrite($fp, $ftag);
  fclose($fp);
}
?>

Jeg har en lille tekst fil (bad.txt) med følgende ord i:

fuck
svin
idiot

Det eneste ord den laver om til [censored] er altid det sidste ord i tekstfilen. I dette tilfælde altså idiot. Men jeg mangler jo lige de andre ord...
Avatar billede andreas Nybegynder
22. oktober 2000 - 01:05 #9
<?
$wall    = \"wall.txt\";
$maxtags = 64;

function write_wall($besked, $wall, $maxtags)
{
  $fil = file(\"bad.txt\", r);
  for($i = 0; $i < count($fil); $i++) {
  $temp = eregi_replace($fil[$i],\"[censored]\", $besked);
  $besked = $temp;
  }

  $otag = @file($wall);

  $ftag .=  \"<tr><td align=\'right\'><td colspan=2>$besked</td></tr>\\n\";

  for( $i=0 ; $i<$maxtags-1 ; $i++ )
  $ftag .= $otag[$i];
  $fp = fopen($wall,  \"w\");
  fwrite($fp, $ftag);
  fclose($fp);
}
?>
Avatar billede Slettet bruger
22. oktober 2000 - 01:53 #10
Andreas >> Den gør det samme endnu... Det eneste ord den laver om til [censored] er det sidste ord i min tekstfil. I dette tilfælde altså idiot. De andre ord der komme før bliver ikke lavet om til [censored].

Min ban.txt se endnu sådan nu :

fuck
hest
svin
hund
kant
idiot

Jeg har tilføjet et par stykker mere, dog er det endnu kun idiot den laver om...

Har du/i andre ide\'er ?
Avatar billede andreas Nybegynder
22. oktober 2000 - 14:19 #11
jeg ved godt hvad der går galt... skal bare lige finde en løsning...

Avatar billede thundercall Nybegynder
23. oktober 2000 - 12:30 #12
<?
$censorfile = \"bad.txt\";

// --- CENSOR FUNCTION: print censor($string);
function censor($str) {
GLOBAL $censorfile;
$censor = file($censorfile);
for($i = 0; $i < count($censor); $i++) {
  $str = eregi_replace(chop($censor[$i]),\"[censored]\", $str);
}
return $str;
}


// --- TEST AREA!!
$message = \"I will fuck ya in your butt!\";
print censor($message);


?>
Avatar billede thundercall Nybegynder
23. oktober 2000 - 12:31 #13
return:
I will [censored] ya in your [censored]!

http://www.thundercall.dk/open/wc/sweetgirl/
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