Ben bezig een een scheldwoorden filter te maken. Op zich lukt dit wel, maar hoe kan ik het zo maken dat als er scheldwoorden in een bericht het script de melding moet geven dat het filter geactiveerd is. En als er dus geen scheldwoorden in een bericht staan hij de melding moet geven dat er geen filter nodig is. Krijg met dit voorbeeld uiteraard altijd de melding Filter geactiveerd!.

Functie?: zomaar aan het proberen of dit kan:)

Hier het stukje script wat ik momenteel heb. Uiteindelijk wil ik de scheldwoorden uit een database halen, maar eerst dit maar eens oplossen;)


<?PHP
$scheldwoorden  = array('lul','eikel','mafkees','zak','kut');
$vervang        = array('mannelijk','hangt in een boom','maffe hendrik','plastic zak','vrouwelijk');
			
$foutewoorden = str_ireplace( $scheldwoorden, $vervang, $row['bericht'] );
						
if ( isset( $foutewoorden )) {
   echo 'Filter geactiveerd!';
   }
else {
   echo 'Geen filter!';
   }
?>
in_array gebruiken?
mmm kom er niet echt uit met die in_array.

Ik heb nu het volgende, maar dit werkt niet natuurlijk:

<?PHP
$scheldwoorden  = array('lul','eikel','mafkees');
$vervang           = array('mannelijk','hangt in een boom','maffe hendrik');

// Dus als er een woord uit $scheldwoorden in $row['bericht'] staat
if ( in_array( $row['bericht'], $scheldwoorden )) {
  $filter = '
             <div id="error">
               Filter geactiveerd!
             </div>';
  }
else {
  echo 'geen filter';
  }
?>


Hoe kan ik dit oplossen?
deze code hieronder moet werken, alleen hij vervangt de woorden niet:

<?PHP
$scheldwoorden  = array('lul','eikel','mafkees');
$vervang        = array('mannelijk','hangt in een boom','maffe hendrik');

if(in_array($row['bericht'], $scheldwoorden)) {
echo'<div id="error">Filter geactiveerd!</div>';
} else {
echo 'geen filter';
}
?> 
<?php
$scheldwoorden = array('lul','eikel','mafkees','zak','kut');
$vervang = array('mannelijk','hangt in een boom','maffe hendrik','plastic zak','vrouwelijk');

$foutewoorden = str_ireplace( $scheldwoorden, $vervang, $row['bericht'], $count );

if ( $count > 0 ) {
echo 'Filter geactiveerd!';
}
else {
echo 'Geen filter!';
}
?>
helaas werkt dit allebei niet in dit voorbeeld.

Probleem is dat ik als ik bv 5 records in mijn database heb staan er dan 5 maal Filter geactiveerd! komt te staan terwijl bv het woord eikel maar in 1 record voorkomt.

Dit mag dus niet:)

Dit script staat nl in een while lus.:


<?PHP
while ( $row = mysql_fetch_assoc( $res )) { 

    $scheldwoorden  = array('lul','eikel','mafkees');
    $vervang        = array('mannelijk','hangt in een boom','maffe hendrik');

    if ( in_array( $row['bericht'], $scheldwoorden )) {
       echo'<div id="error">Filter geactiveerd!</div>';
       }
    else {
       echo 'geen filter';
       }

    bla, bla

    }
?>


Mijn script heb ik getest en werkt.
@SanThe:
Ik had het net een beetje anders aangepast waardoor het niet werktte.
Nu werkt het prima.

Perfect, dank je wel!
nou heb ik toch nog een vraagje.

Ik heb het nu wel voor elkaar, maar nu wil ik de scheldwoorden uit een database halen. Database had ik gemaakt en wil die nu gaan gebruiken.

Als ik dit doe dan moeten er naar mijn idee 2 arrays komen die elk de scheldwoorden vervangt en de andere de vervanging daarvan bevat.

Nu heb ik het volgende, maar dit gaat niet helemaal goed zo.


<?PHP
$sSql = "SELECT * FROM gastenboek_filter";

if ( $result = mysql_query( $sql )) {
    $scheldwoorden = array();
    $vervang       = array();
    
    while ( $row = mysql_fetch_assoc( $result )) {
        $scheldwoorden[] = $row['scheldwoord'];
        $vervang[]       = $row['vervanging'];
      	}
    }						
						
$foutewoorden = str_ireplace( $scheldwoorden, $vervang, $row['bericht'], $count );

?>


Inmiddels gevonden. Was een kleinigheidje:)

Ik gebruikte :
mysql_fetch_assoc ipv
mysql_fetch_array

en ik zag dat er
mysql_query( $sql ) stond ipv
mysql_query( $sSql )

Dit werkt:)

Gelieve Niet Bumpen:

Twee of meer keer achter elkaar in een topic posten heet bumpen. Bumpen is pas na 24 uur toegestaan en kan een reden zijn voor de admins en moderators om een topic te sluiten. Gebruik indien nodig de knop om je tekst aan te passen.

SanThe.

Regel 2 => $sSql
Regel 4 => $sql

Reageren