boese woerter script

sh1t0R

Aktives Mitglied
Hallo ihr,

Ich brauche hilfe bei meinem Filter script fuer mein board.
Ich habe in der FUnktion eine Liste mit 'boesen' Woertern.

Hier die funktion:

CODE
<?php

/* Filter Funktion ------------------------------
#
#  Autor:   Tom Weber @ shitcat.com
#  Erstellt:   9. Aug 05
#  Letzte Änderung: 9. Aug 05
#  Version:  1.0
#
#  Die Funktion geht einen String durch und
#  überprüft jedes Wort. Wenn das Wort den
#  Regeln widerspricht, gibt die Funktion
#  'TRUE' zurück. Falls nicht 'FALSE'.
#  
#  www.shitcat.com / tom@shitcat.com ----------*/


function boardfilter($conString)
{
// alle schlechten Woerter
$badwords = array("schlafen",
    "Mist",
    "sieg",
    "heil",
    "hitler",
    "seek",
    "s33k",
    "h1tler",
    "adolf",
    "stalin",
    "neger",
    "nigga",
    "Katastrophe",
    "motherf"
    );

$arrLen = 14; // statisch :(

// String in einzelne Woerter aufteilen mittels 'explode'
$words = explode(" ", $conString);

foreach($words as $word)
{
 for($i=0; $i<$arrLen; $i++)
 {
  if($badwords[".$i."] == $word)
   return TRUE;
  else
   return FALSE;
 }
}
}

?>



Das Board hat gewisse Regeln, wenn z.b. eben der Filter das Wort "f icken" findet fährt er mit dem Speichern (in DB) nicht weiter. Die funktion kommt hier zur geltung:


CODE if(boardfilter($text))
 { fehlermeldung



wollte jetzt fragen warum das nicht funktioniert. Ihr koennt das selber hier testen.

Danke, mfg, Tom
 
CODE
for($i=0; $i<$arrLen; $i++)
{
if($badwords[".$i."] == $word)
return TRUE;
else
return FALSE;
}



Beim ersten return FALSE; springt es aus der Funktion. Vielleicht nützt es was, wenn du das return FALSE; ganz an den schluss machst (Ans Ende der Funktion).

Weil: Wenn ein Nicht-Böses wort gefunden wird, springt es aus der Funktion. Es sollte nur beim finden eines bösen Wortes direkt mit return true; aus der Funktion springen. Und erst wenn nicht gefunden wurde, ganz am schluss, ein return false;

(Else-Bereich löschen)
 
QUOTE (sh1t0R @ Di 9.8.2005, 9:51) Hallo ihr,

Ich brauche hilfe bei meinem Filter script fuer mein board.
Ich habe in der FUnktion eine Liste mit 'boesen' Woertern.

Hier die funktion:


CODE
<?php

/* Filter Funktion ------------------------------
#
# Autor: Tom Weber @ shitcat.com
# Erstellt: 9. Aug 05
# Letzte Änderung: 9. Aug 05
# Version: 1.0
#
# Die Funktion geht einen String durch und
# überprüft jedes Wort. Wenn das Wort den
# Regeln widerspricht, gibt die Funktion
# 'TRUE' zurück. Falls nicht 'FALSE'.
#
# www.shitcat.com / tom@shitcat.com ----------*/


function boardfilter($conString)
{
// alle schlechten Woerter
$badwords = array("schlafen",
"Mist",
"sieg",
"heil",
"hitler",
"seek",
"s33k",
"h1tler",
"adolf",
"stalin",
"neger",
"nigga",
"Katastrophe",
"motherf"
);

$arrLen = 14; // statisch :(

// String in einzelne Woerter aufteilen mittels 'explode'
$words = explode(" ", $conString);

foreach($words as $word)
{
for($i=0; $i<$arrLen; $i++)
{
if($badwords[".$i."] == $word)
return TRUE;
else
return FALSE;
}
}
}

?>



Das Board hat gewisse Regeln, wenn z.b. eben der Filter das Wort "f icken" findet fährt er mit dem Speichern (in DB) nicht weiter. Die funktion kommt hier zur geltung:


CODE if(boardfilter($text))
{ fehlermeldung



wollte jetzt fragen warum das nicht funktioniert. Ihr koennt das selber hier testen.

Danke, mfg, Tom

wie madox schon sagte:


CODE
<?php

/* Filter Funktion ------------------------------
#
# Autor: Tom Weber @ shitcat.com
# Erstellt: 9. Aug 05
# Letzte Änderung: 9. Aug 05
# Version: 1.0
#
# Die Funktion geht einen String durch und
# überprüft jedes Wort. Wenn das Wort den
# Regeln widerspricht, gibt die Funktion
# 'TRUE' zurück. Falls nicht 'FALSE'.
#
# www.shitcat.com / tom@shitcat.com ----------*/


function boardfilter($conString)
{
// alle schlechten Woerter
$badwords = array("schlafen",
"Mist",
"sieg",
"heil",
"hitler",
"seek",
"s33k",
"h1tler",
"adolf",
"stalin",
"neger",
"nigga",
"Katastrophe",
"motherf"
);

$arrLen = 14; // statisch :(

// String in einzelne Woerter aufteilen mittels 'explode'
$words = explode(" ", $conString);

foreach($words as $word)
{
for($i=0; $i<$arrLen; $i++)
{
if($badwords[".$i."] == $word)
return TRUE;
}
}
return false;
}

?>

 
CODE
foreach($words as $word)
{
if ( ! array_search( $word, $badwords ) ) {
return true;
}
}
return false;

 
ja danke so geht es.

CODE foreach($words as $word)
{
if (array_search($word, $badwords))
return true;
}

return false;


einfach ohne negation vor dem array_search
 
Zurück
Oben