Avatar billede michaeltryl Seniormester
20. december 2006 - 19:11 Der er 11 kommentarer og
1 løsning

erstatning af grimme ord fra database

jeg har et forum hvor jeg godt vil have erstattetdiverse grimme ord med ***** eller et andet pænere ord.
min ide er at have en tabel i mysql med følgende felter
id, g_ord, p_ord (g= grimt, p=pænt)
jeg har fundet dette script som skulle gøre arbejdet, men jeg er ikke så meget inde i array

<?php
$ord_der_skal_erstattes = array("fed","idiot");
$erstat_ord_med = array("erotisk buttet","abekat");
$erstat_i = "Han er fed og en kæmpe idiot";
echo str_replace($ord_der_skal_erstattes, $erstat_ord_med, $erstat_i);
?>

hvordan laver jeg indholdet i tabellen om til de to array
$ord_der_skal_erstattes og $erstat_ord_med?
erstat_i bliver en tekst hentet fra forum tabellen
Avatar billede krea Praktikant
20. december 2006 - 19:40 #1
Hvad er det for et forum ? phpbb, invision etc. ?
Avatar billede michaeltryl Seniormester
20. december 2006 - 19:43 #2
det er et simpelt forum jeg selv har kodet
Avatar billede wordwrap Nybegynder
20. december 2006 - 21:43 #3
noget ala det her du er ude efter eller?

$q = mysql_query("select p_ord,g_ord from TABEL order by id");
while($rs = mysql_fetch_array($q)){
    $ord_der_skal_erstates[]= $rs['g_ord'];
    $erstat_ord_med[]=$rs['p_ord'];
}
Avatar billede michaeltryl Seniormester
20. december 2006 - 22:41 #4
jeg kan ikke helt få det til at fungere. min kode er herunder. jeg har indsat to poster i databasen, med det resultat at teksten i forummet bliver udskrevet 2 gange, men ingen ord bliver erstattet selvom de burde. har du et bud

$tekst = $a[tekst];
$nytekst = htmlentities($tekst);
$teksten = nl2br("$nytekst");
$tekstenen = url2link($teksten);

$ban = mysql_query("SELECT p_ord, g_ord FROM ban ORDER BY banid");
while($rs = mysql_fetch_array($ban))
{
    $ord_der_skal_erstates= $rs['g_ord'];
    $erstat_ord_med=$rs['p_ord'];
$ban_tekst = str_replace($ord_der_skal_erstattes, $erstat_ord_med, $tekstenen);


echo "<div>";
echo "<b>tilbage til <a href='visforum.php?gr=$gr'>forum</a></b><br><br>";
echo "<table border='1' width='100%'>";
echo "<tr><td width='25%'>";
echo "<b>$forfatter</b><br>$dato-$maaned-$aar <br>Kl. $tid</td>";
echo "<td valign='top'><u><b>$over</u><br>$ban_tekst</b></td>";

$anmeld = mysql_query("SELECT anmeldt FROM forumtraad WHERE traadID = '$id'") or die(mysql_error());
while ( $g = mysql_fetch_array($anmeld))
{
$anmeldt = $g[anmeldt];
if ($anmeldt == 0)
echo"<td width='15%'><a href='anmeld.php?id=$id&traad=$traad&gr=$gr'><div class='lille'>Anmeld til admin</div></a></td></tr>";
else if ($anmeldt == 1)
echo "<td width='15%'><div class='lille'>Tråd er anmeldt til admin</div></td></tr>";
else if ($anmeldt == 2)
echo "<td width='15%'><div class='lille'>admin har markeret dette indlæg som ok</div></td></tr>";
}}}
Avatar billede michaeltryl Seniormester
20. december 2006 - 22:43 #5
glemte at lave disse to linier om sådan [] var på, men det giver samme resultat, jeg havde prøvet uden for at se om det virkede

$ord_der_skal_erstates[]= $rs['g_ord'];
$erstat_ord_med[]=$rs['p_ord'];
Avatar billede wordwrap Nybegynder
20. december 2006 - 23:02 #6
$ban = mysql_query("SELECT p_ord, g_ord FROM ban ORDER BY banid");
while($rs = mysql_fetch_array($ban))
{
    $ord_der_skal_erstates[]= $rs['g_ord'];
    $erstat_ord_med[]=$rs['p_ord'];
}
$ban_tekst = str_replace($ord_der_skal_erstattes, $erstat_ord_med, $tekstenen);

prøv eventuelt at udskrive dine arrays, og se om de ser rigtigte ud:

print_r($ord_der_skal_erstates);
Avatar billede michaeltryl Seniormester
20. december 2006 - 23:39 #7
nu udskrives det kun 1 gang, men ord erstattes stadig ikke. jeg har testet den kode jeg har fundet på phpartikler og den virker fint. min kode ser nu sådan ud

$ban = mysql_query("SELECT p_ord, g_ord FROM ban ORDER BY banid");
while($rs = mysql_fetch_array($ban))
{
    $ord_der_skal_erstates[]= $rs['g_ord'];
    $erstat_ord_med[]=$rs['p_ord'];
}
$ban_tekst = str_replace($ord_der_skal_erstattes, $erstat_ord_med, $tekstenen);

echo "<div>";
echo "<b>tilbage til <a href='visforum.php?gr=$gr'>forum</a></b><br><br>";
echo "<table border='1' width='100%'>";
echo "<tr><td width='25%'>";
echo "<b>$forfatter</b><br>$dato-$maaned-$aar <br>Kl. $tid</td>";
echo "<td valign='top'><u><b>$over</u><br>$ban_tekst</b></td>";
Avatar billede michaeltryl Seniormester
20. december 2006 - 23:40 #8
og begge arrays indeholder det som er i databsen
Avatar billede wordwrap Nybegynder
20. december 2006 - 23:54 #9
kan ikke lige se hvad der er galt der, har lige prøvet med følgende som virker fint

<?
mysql_connect("host","user","pass");
mysql_select_db("db");

$text = "strengen med en masse grimme ord";

$q = mysql_query("select g_ord, p_ord from ban order by id");
while($rs = mysql_fetch_array($q)){
    $bad[] = $rs['g_ord'];
    $good[] = $rs['p_ord'];
}
echo str_replace($bad,$good,$text);
?>
Avatar billede wordwrap Nybegynder
20. december 2006 - 23:59 #10
prøv den her

$ban = mysql_query("SELECT p_ord, g_ord FROM ban ORDER BY id");
while($rs = mysql_fetch_array($ban))
{
    $ord_der_skal_erstates[]= $rs['g_ord'];
    $erstat_ord_med[]=$rs['p_ord'];
}

echo "<div>";
echo "<b>tilbage til <a href='visforum.php?gr=$gr'>forum</a></b><br><br>";
echo "<table border='1' width='100%'>";
echo "<tr><td width='25%'>";
echo "<b>$forfatter</b><br>$dato-$maaned-$aar <br>Kl. $tid</td>";
echo "<td valign='top'><u><b>$over</u><br>".str_replace($ord_der_skal_erstates,$erstat_ord_med,$tekstenen)."</b></td>";
Avatar billede michaeltryl Seniormester
21. december 2006 - 00:02 #11
forstår ingenting, jeg ændrede til bad og good og nu virker det.
du smider bare et svar starnge_76 så får du point og tak for hjælpen
Avatar billede wordwrap Nybegynder
21. december 2006 - 00:03 #12
svar :)
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

Seneste spørgsmål Seneste aktivitet
I går 10:21 Ny printer, men hvilken Af mort1 i Printere
13/0819:41 USB på Linux Af Uvanga i Linux
12/0818:26 Hvilken type mus Af mort1 i PC
11/0813:21 ms Forms Af leahcim i Andet software
10/0821:30 Blokeret på Snapchat? Af LineP i Chat & Messaging