CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden |
27.06.2009, 01:50:53
|
Anfänger
|
|
Registriert seit: Nov 2007
Beiträge: 27
|
|
Worte aus Badwordliste teilweise unkenntlich machen
Hallo,
ich möchte eine Badwordliste anlegen und mit einem eingegebenen Text vergleichen.
Badwordliste z.B. Schwein, Sau, Idiot etc.
Werden die Worte in einem Text gefunden, sollen diese Worte
nach der "Behandlung" so aussehen: S*****n, S*u, I***t
Bis auf den ersten und letzten sollen sämtliche Buchstaben eines Wortes
durch Sterne ersetzt werden.
Da meist ein ziemlich langer Test durchsucht werden soll, bis zu 5000 Worte,
ist die Frage, wie man das am schnellesten bewerkstelligen kann.
Hat da jemand einen Tipp ?
Grüsse
Calvados
|
27.06.2009, 07:57:57
|
Anfänger
|
|
Registriert seit: Mar 2009
Alter: 29
Beiträge: 45
|
|
AW: Worte aus Badwordliste teilweise unkenntlich machen
Erstmal guten Morgen ;)
Ich würde es mit str_replace lösen:
PHP-Code:
<?php
$text = 'Schwein, Sau, Idiot'; // bzw. dein Text
$text = str_replace('Schwein','S*****n',$text); // Sucht im nach Schwein und ersetzt es durch S*****n $text = str_replace('Sau','S*u',$text); // Sucht im nach Sau und ersetzt es durch S*u $text = str_replace('Idiot','I***t',$text); // Sucht im nach Idiot und ersetzt es durch I***t
echo $text; // Sollte nun S*****n, S*u, I***t ausgeben
?>
Das kannst du dann beliebig erweitern, indem du $text weiter durchsuchst:
PHP-Code:
$text = str_replace('Böses Wort','Böses Wort zensiert',$text);
Sicherlich nicht die eleganteste Lösung (man kann es bestimmt auch mit Arrays machen), aber es funktionniert.
Geändert von elkmod (27.06.2009 um 08:00:49 Uhr)
Grund: Falsche Kommentare :)
|
27.06.2009, 20:10:24
|
Anfänger
|
|
Registriert seit: Nov 2007
Beiträge: 27
|
|
AW: Worte aus Badwordliste teilweise unkenntlich machen
Danke für den Hinweis,
Mit Deinem Code als Vorlage habe ich das mal so probiert:
PHP-Code:
$ROW = mysql_fetch_row(mysql_query("SELECT badlist
FROM ".$dbtable99." "));
$badlist = explode("\r\n", $ROW[0]);
$schleife = count($badlist);
$schleife --;
$code = 0;
$testtext = 'Du bist ein Idiotischer Idiot Blödmann Ein trotteliges
Schwein idiot Trottel';
while($schleife >=0)
{
$kombi = $badlist[$code];
$teilen = explode(',', $kombi);
$bad = $teilen[0]; // Teil1 Badword
$good = $teilen[1]; // Teil2 Ersatzwort
if(function_exists('str_ireplace'))
{
$testtext = str_ireplace($bad, $good, $testtext);
}
else
{
$testtext = str_replace($bad, $good, $testtext);
}
$code ++;
$schleife --;
}
echo $testtext;
Text:
Du bist ein Idiotischer Idiot Blödmann Ein trotteliges Schwein idiot Trottel
Die Badwordliste kommt aus der DB und sieht so aus:
test,t**t\r\nDussel,D****l\r\nIdiot,I****t\r\nSchwein,S******n\r\nBlöd mann,B****mann\r\nArschloch,A****loch\r\nDu,D*\r\nbist,Bi*st
Ergebnis (PHP4):
D* Bi*st ein I****tischer I****t B****mann Ein trotteliges S******n idiot Trottel
Ergebnis (PHP5):
D* Bi*st ein I****tischer I****t B****mann Ein trotteliges S******n i***t Trottel
Funktioniert also ganz gut - ich finde den Code allerdings nicht besonders
elegant und kenne auch nicht die Serverbelastung bei grösseren Texten z.B. 5000 Worte
und einer grösseren Badword-Liste - z.B. 50 Badwords...
Geht das auch besser, schneller, schöner? :-)
Grüsse
Calvados
Geändert von Calvados (28.06.2009 um 14:38:30 Uhr)
|
28.06.2009, 13:20:29
|
Anfänger
|
|
Registriert seit: May 2007
Alter: 44
Beiträge: 53
|
|
AW: Worte aus Badwordliste teilweise unkenntlich machen
Und wenn du eine extra Tabelle für die Badwortliste machst ?
Die Ersetzung direkt bei der Abarbeitung der Tabelle machst ?
So spart man sich die Implodes etc.
Was effizienteres fällt mir im momment nicht ein...
__________________
Das Leben ist ein komisches Spiel...
Aber die Grafik ist GEIL !
|
28.06.2009, 14:33:18
|
Anfänger
|
|
Registriert seit: Nov 2007
Beiträge: 27
|
|
AW: Worte aus Badwordliste teilweise unkenntlich machen
Zitat:
Zitat von Chance
Und wenn du eine extra Tabelle für die Badwortliste machst ?
Die Ersetzung direkt bei der Abarbeitung der Tabelle machst ?
So spart man sich die Implodes etc.
Was effizienteres fällt mir im momment nicht ein...
|
Moin :-)
Gute Idee - aber wie ?? Bin halt noch Anfänger..
Geändert von Calvados (28.06.2009 um 14:39:30 Uhr)
|
29.06.2009, 05:44:58
|
Anfänger
|
|
Registriert seit: May 2007
Alter: 44
Beiträge: 53
|
|
AW: Worte aus Badwordliste teilweise unkenntlich machen
Ganz einfach...
In meinem System würde ich das so machen:
PHP-Code:
$TempQuery['Query'] = Query('SELECT bad,good FROM '.DB_PREFIX.'_badword WHERE ident!= "" ORDER BY sort_id',__FILE__,__LINE__);
while ($TempQuery['Data'] = mysql_fetch_array($TempQuery['Query'],MYSQL_ASSOC)) {
$testtext = str_replace($TempQuery['Data']['bad'], $TempQuery['Data']['good'], $testtext);
}
Ich hoffe, es hilft weiter ^^ .
__________________
Das Leben ist ein komisches Spiel...
Aber die Grafik ist GEIL !
|
01.07.2009, 19:41:08
|
Anfänger
|
|
Registriert seit: May 2006
Beiträge: 109
|
|
AW: Worte aus Badwordliste teilweise unkenntlich machen
Hallo,
da dieses Thema meinem leider ohne viel Hilfe erreichendem Thema sehr ähnlich ist, wäre es nett zu wissen wie die "badwords" in deiner DB vorliegen, verstehe deinen code nicht.
Danke
Sandra
|
03.07.2009, 00:03:28
|
Anfänger
|
|
Registriert seit: Nov 2007
Beiträge: 27
|
|
AW: Worte aus Badwordliste teilweise unkenntlich machen
Hallo,
Wessen Code meinst Du?
Wenn Du mein Beispiel meinst - ganz einfach:
Im Adminbereich gibt es eine textarea - der Admin gibt die Badwords so ein:
test,t**t
Dussel,D****l
Idiot,I***t
u.s.w.
Nach jeder Wortkombination erfolgt ein klick auf die Return-Taste (daher \r\n).
in der DB wird alles in einem TEXT-Feld gespeichert und sieht so aus:
test,t**t\r\nDussel,D****l\r\nIdiot,I****t\r\nSchwein,S******n\r\nBlöd mann,B****mann\r\nArschloch,A****loch\r\nDu,D*\r\nbist,Bi*st
Den Rest erkennst Du am PHP-Code...
Aber möglicherweise ist Dir das ja auch zu umkompliziert ;-)
Grüsse
Calvados
Geändert von Calvados (03.07.2009 um 00:40:27 Uhr)
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 00:14:14 Uhr.
|