Jump to content
elektro-skateboard.de

e-b-a-y Filter


Niranda

Empfohlene Beiträge

Geschrieben

Hey hey...

ich weiß zwar nicht, was der Spaß mit e-b-a-y soll, aber hier mal ein etwas effektivierer Filter ;)

 

<?php

function filter_ibay ($text) {
$replace = "*****";
$filteredText = "";
$words = explode(" ", $text);

foreach ($words as $pos => $word) {
	if (preg_match_all("/(e).*?(b).*?(a).*?(y)/is", trim(strtolower($word)), $matches)) {
		$word = $replace;
	}

	$filteredText .= $word." ";
}

$filteredText = trim($filteredText);
return $filteredText;
}

##--> Example
$test = "Ich war gestern wieder auf e_Bay shoppen und da das Wort immer Zensiert wird, schreibe ich jetzt mal e_B-a*Y oder EundB---A&->Y auf!";
$newtest = filter_ibay($test);

echo "<table border=1><tr><td>Original</td><td>".$test."</td></tr>";
echo "<tr><td>Geändert</td><td>".$newtest."</td></tr></table>";

?>

Geschrieben (bearbeitet)

Hehe,Kai muss sich von ner Frau was sagen lassen :devil: :D und das als Chef wenn das die Mitarbeiter erfahren :D :D :D

 

Da musste ich mich einfach drüber lustig machen :D

 

@Niranda haste das kopiert oder selbst geschrieben ?

bearbeitet von Julian
Geschrieben

*g* regex-fun :cornut:

Der Reguläre-Ausdruck ist aber zu effektiv, würde das halbe Forum weg zensieren :-)

 

Teste den Ausdruck mal mit:

als ich einmal auf diesen auktionshaus 
war da sah ich ein angebot von aldi und toysrus

Ein paar Erläuterungen zu dem Ausdruck:

/(e).*?(b).*?(a).*?(y)/is

Bei gesetztem /s geht der . auch über Zeilenumbrüche hinaus, will man nicht wenn man davon ausgeht das der Suchstring in einer Zeile steht.

 

Die Klammern brauchst du nicht. () = Substitution, alles was in der Klammer matcht wird in Variablen abgelegt die später verwendet werden können. Im Fall von preg_match_all im Array das die Funktion zurück gibt.

 

* matcht 0 oder mehrmals, ? brauchst du da nicht extra hinten anstellen.

 

Der Regex kann also auch so aussehen:

/e.*b.*a.*y/is

wäre aber genauso gefräßig und je nach größe des Textes auch sehr unperformant.

 

Um verschiedene Variationen zu filtern, ohne versehentlich normalen Text zu zensieren müsste der Ausdruck etwas genauer definiert werden.

zb sowas

 

e[^a-z0-9]*e*b[^a-z0-9]*b*a[^a-z0-9]*a*y*y

 

[^a-z0-9] bedeutet alles außer a-z und 0-9, also e-b.+a,y usw.

* 0 oder mehrmals

 

matcht auf Variationen wie:

e-b_a-y

e.b..a:y

e-b-a-y

eeebbaayy

 

Das würde die Wahrscheinlichkeit auf falsche Treffer verringern.

 

Ne nette Spielwiese für regex:

Externe Links nur für Mitglieder sichtbar

Geschrieben (bearbeitet)

LOL da binn ich fast raus,wenn das auch nur einer hier im Forum verstanden hat fresse ich einen Apfel :D

Externe Links nur für Mitglieder sichtbar

bearbeitet von Julian
Geschrieben
Cool dann schalte vorher das GPS-Tracking ein, dann können wir die Route durch deinen Körper verfolgen *gg*

 

:DIch denke das bringt nichts wenne glück hast kannste den Standort auf 3m bestimmen :mad: aber ich mach die Kamera an dann kann ich es mir nacher ansehen :D wenn es nach dem Wasserschaden noch funktioniert wenn du weist was ich meine :D

 

P.S.Dar wir ja sowieso gerade Offtopic sind,wie wäre es mit einem Toiletten smiley :confused5: :D

Geschrieben

<a href='http://www.smiliemania.de/' target='_blank' title='smilies smileys'><img src='http://smiliemania/smilie.php?smile_ID=5279' alt='smilies smileys' border='0'></a>

 

 

Und als UBB:

Externe Links nur für Mitglieder sichtbar

Geschrieben
LOL da binn ich fast raus,wenn das auch nur einer hier im Forum verstanden hat fresse ich einen Apfel :D

Externe Links nur für Mitglieder sichtbar

 

Jo,dann friss mal, ich hab's verstanden.

Sorry bin halt Programierer

Geschrieben

den code hab ich in ein paar Minuten hingeklatscht und ein mal kurz getestet :D

Darum sieht der so :x aus... naja..

Woran man meinen Code immer erkennt - An der Kommentarformatierung:

##--> Hauptpunkt

#-> Unterpunkt

# BehindCodeComment

 

@Kai:

Du übersiehst aber was:

Er Splittet die Texte bei den Leerzeichen, sprich überprüft Wort für Wort - da sollte nicht das halbe Forum drunter leiden.

Die seltsame Syntax des Regex kommt daher, dass ich mir Regexe nicht selbst schreibe, sondern mit einem Script/Tool selbst zusammenbastel. Da verhinden die Klammern viele Fehler bzw. viele Zusatzabfragen. ;) Ich arbeite sehr viel damit, da ist das selbst schreiben unproduktiv - schnell die 100 und mehr Zeichen zusammengeklickt und fertig.

 

Trotzdem weiß ich nicht, wieso man den Namen filtert... Ein paar Sätze bzgl. der Inanspruchnahme und der freien Meinungsäußerung würden's doch auch tun? ;)

Geschrieben

Verstanden habe ich das auch, bin ITler.. :devil:

 

Aber ich habs nicht so mit Web-Apps und Programmierung. Eher mit Hardware, Problemlösung, Administration, virtuellen Maschinen, bald Mikrocontrollerprogrammierung und so weiter..

 

Darum steht hier auch ein nettes kleines Board mit 2 x Hexacore-Xeons, 24 GB RAM usw. links vor mir. :devil:

 

Könnte ja bei Gelegenheit einmal ein paar Fotos von dem Teil machen, ist aber immer noch nur Testplattform, weil die Wasserkühlung sich bei dermaßen exklusiven Boards (EVGA Super Record 2 Classified) zum Problem entwickelt (entweder zweiteilig oder ein besch****ner einteiliger Kühler, hoffe, dass eine Auftragsfertigung das Problem löst).

 

Bei dermaßen vielen Projekten muss einiges halt langsamer voran gehen, geht leider nicht anders. :( Der Tag hat nur 24 Stunden..

 

Ach btw, ich soll den armen, aaarmen Julian bei seiner Scheiss-Smiley-Protestaktion (also dem Smiley auf dem Pott) unterstützen.

 

Also mache ich das mal:

 

Rettet die Scheisssmileys! Embed more white pots! Kai for President!

 

Ach ja, ein Tittensmiley wäre auch nicht schlecht. Fällt mir gerade so ein.. Distracting Animation oder so.. :devil:

 

Viele Grüße,

 

Wolf

Geschrieben (bearbeitet)
@Julian:

 

Ich hoffe mal, das war so, wie du dir das vorgestellt hast? :devil:

 

Wenn nicht: Auch egal! :D :pizza:

 

Ist ganz aktzeptabel gewesen aber noch ausbaufähig :thumbsup: :D

Naja danke für deine Mitarbeit belohnung ist unten :D

Und danke ich habe mich schrott gelacht über den Satz :

 

show.php?smilie=1828131-0.png

 

 

PS:Zensiert

bearbeitet von Julian
Geschrieben

@Kai:

Du übersiehst aber was:

Er Splittet die Texte bei den Leerzeichen, sprich überprüft Wort für Wort - da sollte nicht das halbe Forum drunter leiden.

Die seltsame Syntax des Regex kommt daher, dass ich mir Regexe nicht selbst schreibe, sondern mit einem Script/Tool selbst zusammenbastel. Da verhinden die Klammern viele Fehler bzw. viele Zusatzabfragen. ;) Ich arbeite sehr viel damit, da ist das selbst schreiben unproduktiv - schnell die 100 und mehr Zeichen zusammengeklickt und fertig.

 

Das Tool/Script bastelt da nix gutes :-)

Lern lieber reguläre Ausdrücke.

Wenn du dich mit Regex ne Weile beschäftigt hast und das kann ich nur empfehlen, dann kann von Unproduktivität keine Rede mehr sein, im Gegenteil!!

 

Stimmt die Textsplittung hatte ich übersehen, hab den Code nur kurz überflogen und da ist mir der Regex ins Auge gesprungen :)

Elegant und vor allem skalierbar ist der Code nicht.

$text nochmal komplett in nem array ... dann foreach und nochmal ne Variable... trim ...

Das ist alles unnötiger Overhead. Klar tut's erstmal aber so Code ist der Grund weshalb immer mehr Ram und CPU gebraucht wird.

 

Wortanfang und Ende kann man auch im regulären Ausdruck formulieren was die Schleife und alles drumherum überflüssig macht.

 

() sollte man weglassen wenn man es nicht braucht, frisst Speicher in der regex-engine und das kann ganz schön viel werden. Die Engine merkt muss sich auch merken wo die Treffer waren denn das was in Klammer steht kann später nochmal matchen und muss dann solange im Speicher gehalten werden bis am Ende das Endgültige Ergebnis feststeht. (schlecht erklärt ich weiß)

Wenn du am Anfang der Runden Klammern ?: schreibst merkt sich die Regex-engine den Inhalt nicht (?:e) zum Beispiel. Wenn man zb eine Oder-Entscheidung Gruppieren muss (der|die) dann braucht man der oder die ja nicht als Referenz, schreibt man (?:der|die) hat man genau was man will.

 

 

 

Muss jetzt los...

 

Den Kackhausgrinsekopf gibt's morgen, da hat Julian Geburtstag :peace:

Tritt dem Gespräch bei

Du kannst jetzt posten und dich später registrieren. Wenn du bereits einen Account hast kannst du dich hier anmelden.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...