SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



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



:: Buchempfehlung ::

Fortgeschrittene CSS-Techniken

Fortgeschrittene CSS-Techniken zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Grundlagen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 27.06.2009, 01:50:53
Calvados Calvados ist offline
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
Mit Zitat antworten
  #2  
Alt 27.06.2009, 07:57:57
elkmod elkmod ist offline
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 :)
Mit Zitat antworten
  #3  
Alt 27.06.2009, 20:10:24
Calvados Calvados ist offline
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)
Mit Zitat antworten
  #4  
Alt 28.06.2009, 13:20:29
Chance Chance ist offline
Anfänger
 
Registriert seit: May 2007
Alter: 44
Beiträge: 53
Chance eine Nachricht über ICQ schicken
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 !
Mit Zitat antworten
  #5  
Alt 28.06.2009, 14:33:18
Calvados Calvados ist offline
Anfänger
 
Registriert seit: Nov 2007
Beiträge: 27
AW: Worte aus Badwordliste teilweise unkenntlich machen

Zitat:
Zitat von Chance Beitrag anzeigen
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)
Mit Zitat antworten
  #6  
Alt 29.06.2009, 05:44:58
Chance Chance ist offline
Anfänger
 
Registriert seit: May 2007
Alter: 44
Beiträge: 53
Chance eine Nachricht über ICQ schicken
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 !
Mit Zitat antworten
  #7  
Alt 01.07.2009, 19:41:08
Sandra Sandra ist offline
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
Mit Zitat antworten
  #8  
Alt 03.07.2009, 00:03:28
Calvados Calvados ist offline
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)
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

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.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 09:02:41 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt