Avatar billede kimox Nybegynder
08. april 2006 - 18:48 Der er 10 kommentarer og
1 løsning

Censur og Array

Hej eksperter.

Jeg havde fået en kode af codedk som jeg har prøvet at lave om, som skulle hente nogle ord i min db, så man slap for at skulle ind og skrive de "forbudte" ord ind i selve koden.. jeg har lavet det om så det ser sådan ud:

$censur = array();
$sql4 = mysql_query ("SELECT * FROM web_forb_bes");
while ( $row_ord = mysql_fetch_assoc($sql4) )
{
$censur[] = nl2br($row_ord['forb_ord']);
}
$tekst = preg_replace( $censur, "*bip*",  $tekst);


men det er forkert, og jeg ved jeg mangler noget med /i bag ved det ord den skal hente i min db.. den kode jeg fik af ham ser sådan her ud uændret:

$censur = array( "/fuck/i", "/tis/i" );
$text = preg_replace( $censur, "*bip*", $text );

den skulle gøre så man og slipper for at skrive alle mulige muligheder til hvert ord, f.eks "fuck", "Fuck", "fUck", "fuCk" osv osv.

kan i hjælpe mig?
Avatar billede webstuff Nybegynder
08. april 2006 - 19:27 #1
Prøv at skift:
$censur[] = nl2br($row_ord['forb_ord']);
ud med:
$censur[] = "/".nl2br($row_ord['forb_ord'])."/i";
Avatar billede kimox Nybegynder
08. april 2006 - 19:37 #2
virker stadig ikke :/.

Jeg har lavet den sådan her nu:

$sql2 = mysql_query ("SELECT * FROM web_tag ORDER BY id DESC");
while($row = mysql_fetch_array($sql2))
{
$tekst = nl2br($row['tekst']);
$censur = array();
$sql4 = mysql_query ("SELECT * FROM web_forb_bes");
while ( $row_ord = mysql_fetch_assoc($sql4) )
{
$censur[] = "/".nl2br($row_ord['forb_ord'])."/i";
}
for ( $i=0;$i<count($censur);$i++ ) {
  if (ereg($censur[$i], $tekst)) {
$vis_tekst = preg_replace( $censur, "*bip*", $tekst );
}
}


og nu skriver den fint alle poster ud, og skriver dato og brugernavn osv, men den skriver ikke teksten ... så den får et eller andet sted ikke fat i $tekst
Avatar billede webstuff Nybegynder
08. april 2006 - 19:48 #3
Det burde kunne lade sig gøre sådan her ved at bruger eregi() i stedet for ereg().

----------------------------

$sql2 = mysql_query ("SELECT * FROM web_tag ORDER BY id DESC");
while($row = mysql_fetch_array($sql2))
{
$tekst = nl2br($row['tekst']);
$censur = array();
$sql4 = mysql_query ("SELECT * FROM web_forb_bes");
while ( $row_ord = mysql_fetch_assoc($sql4) )
{
$censur[] = nl2br($row_ord['forb_ord']);
}
for ( $i=0;$i<count($censur);$i++ ) {
  if (eregi($censur[$i], $tekst)) {
$vis_tekst = preg_replace( $censur, "*bip*", $tekst );
}
}
----------------------
Hjalp det noget?
Avatar billede kimox Nybegynder
08. april 2006 - 19:57 #4
nej den skriver nu:

Warning: preg_replace(): Delimiter must not be alphanumeric or backslash in /

og det printer den lige så mange gange som der er ord i min DB
Avatar billede kimox Nybegynder
08. april 2006 - 19:58 #5
og så skriver den det samme tekst i alle beskeder der står i web_tag .. men ændre ikke "fuck" til "bip"
Avatar billede webstuff Nybegynder
08. april 2006 - 19:58 #6
$vis_tekst = preg_replace("/".$censur."/i", "*bip*", $tekst );
Avatar billede kimox Nybegynder
08. april 2006 - 20:00 #7
fint, nu skriver den ingen fejl ud, men den skriver stadig den sidste nye besked i alle de beskeder der er skrevet ind i web_tag
Avatar billede kimox Nybegynder
08. april 2006 - 20:10 #8
den er lidt sjov, for den virker sådan:

1. hvis jeg ikke skriver et forbudt ord, så skriver den ikke noget tekst ind.

2. skriver jeg et forbudt ord efter jeg har tastet nogle beskeder ind, som ikke inden holder forbudte ord, så bliver alle ændret til den tekst hvor jeg har skrevet et forbudt ord. Meget svært at forklare.
Avatar billede webstuff Nybegynder
08. april 2006 - 20:28 #9
Ja det lyder ret bizart :I
Avatar billede kimox Nybegynder
08. april 2006 - 20:30 #10
hehe. det må være noget med arrayet
Avatar billede kimox Nybegynder
02. december 2006 - 15:39 #11
-lukket-
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