| 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...? |
||
|
|
Svara med citat
|
|
|
#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.";
}
?>
|
||
|
|
Svara med citat
|
|
|
#3 | ||
|
|||
|
Nykomling
|
Tack Jonas, det funkar bra nu!
|
||
|
|
Svara med citat
|
|
|
#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 med citat
|
| Svara |
|
|