FAQ |
Kalender |
![]() |
#1 | ||
|
|||
Nykomling
|
Hej,
Försöker göra ett litet censurskript till en gästbok. Så här ser det ut: Kod:
# Orden som ska censureras $censorship = array("en", "bunt", "fula", "ord"); $message = $_POST['message']; $split = explode("", $message); # Kollar igenom varje ord i det skrivna fältet foreach ($censorship as $word) { if(in_array($split, $word) === true) { echo "Du har använt dig av ett eller flera otillåtna ord. Formulera om ditt inlägg och försök igen."; } } Är osäker på om jag strukturerat upp det fel eller om det är något jag kan ha missat...? |
||
![]() |
![]() |
![]() |
#2 | ||
|
|||
Klarade millennium-buggen
|
in_array() är case-sensitiv, så "fula" matchar inte "fUla","Fula","fuLa" osv..
Rekommenderar dig att göra en regexp istället. Kod:
<?php $str_badwords = 'detta|är|en|massa|fula|ord'; $message = trim($_POST['message']); if(preg_match("/(".$str_badwords.")/is", $message)) { echo "Du har använt dig av ett eller flera otillåtna ord. Formulera om ditt inlägg och försök igen."; } ?> |
||
![]() |
![]() |
![]() |
#3 | ||
|
|||
Nykomling
|
Tack Jonas, det funkar bra nu!
|
||
![]() |
![]() |
![]() |
#4 | |||
|
||||
Medlem
|
Eller kan du göra så att alla "fula ord ersätts med [biiip]
![]() Kod:
<? $inord = "en text som ska kollas"; $notallowed = array("en", "bunt", "fula", "ord"); $totw = count($notallowed)-1; $repword = Array(); for ($i=0;$i<=$totw;$i++) { $notallowed[$i] = '@'.$notallowed[$i].'@si'; $repword[$i] = "[<i>biiip</i>]"; } $newmsg = preg_replace($notallowed,$repword,$inord); $inord = $newmsg; ?> |
|||
![]() |
![]() |
Svara |
|
|