Seite 1 von 2

Titelfilter bei unsinnigen Titeln für neue Themen

Verfasst: 27.06.2006 15:23
von mgutt
Viele User regen sich über "dumme" Titel auf, die häufig neue User posten.

Hier möchte ich gerne vorgreifen und Dinge wie diese ausfiltern:

- "Hilfe" (ohne Bezug zum Inhalt)
- "HHHHHIIIIIILLLLLLFFFFFFEE" (Wiederholung von mehr als 3 einzelnen Zeichen)
- [BBCODE] (werden gerne versucht einzusetzen, aber gehen ja an dieser Stelle eh nicht)
- weitere folgen... (ich halte mal Ausschau danach)

Wenn sowas vorkommt, dann Fehlermeldung à la "Bitte aussagekräftigeren Titel wählen" etc. oder ihr habt eine bessere Idee / Anmerkung.

Verfasst: 27.06.2006 16:16
von Xwitz
Man müßte ein paar "Reizwörter" definieren und wenn der Titel nur aus solchen besteht, dann kommt auch die Meldung.

z.B: Hilfe, bitte, problem, ...

Bei der Auswahl der Wörtern darauf achten, das sich nur damit keine sinnvollen Titel bilden lassen oder alles über drei Wörtern zulassen. Groß-Kleinschreibung und Sonderzeichen am besten ignorieren.

Das wird relativ aufwendig.

Verfasst: 27.06.2006 20:29
von BB-BF-BM
vielleicht Zeichenwiederholungen von über x-mal verbieten.
Dann werden auch die zechn Ausrufezeichen hinter dem Nix geht mehr gematched...
Man kann aber auch sinnvolle Titel mit "Problem" oder "Hilfe" erstellen.
"Benötige Hilfe beim Erstellen von Foren", "Habe ein Problem mit der Konfiguration der Cookies" oder ähnliches. Also praktisch das, was Xwitz meinte.
Aber zum Beispiel "Loginprobleme" ist (im Vergleich zu manchen anderen Themen) kein dummer Titel.
und was ist zum Beispiel mit "Fetter Fehler!!!" Der würde nicht gematched, da es ZWEI Worte sind, auch wenn eins nichtssagend ist...

Der Ansatz ist gut, aber eine Verwirklichung brauch seine Zeit... :(

Re: Titelfilter bei unsinnigen Titeln für neue Themen

Verfasst: 27.06.2006 20:58
von blubbin
Hi

eventuell kannst du für dein "HHHHHIIIIIILLLLLLFFFFFFEE"-Problem den MOD:ausrufezeichenimtitel-Mod als Ansatz verwenden.

blubbin

Verfasst: 27.06.2006 22:00
von mgutt
leider nein. dort wird nur ganz speziell auf jedes einzelne zeichen eingegangen. also keine "allgemeine" regel zum replacen. :-?

aber ich merke an der Resonanz, dass es auch andere Admins gibt, die es gerne vermeiden würden 8)

EDIT:

Mit einem solchen Befehl könnte man z.B. die Wiederholung von Sonderzeichen aller Art mit einer Zeichenfolge >3 zu einer reduzieren:

Code: Alles auswählen

$preview_subject = preg_replace("/([\W]){4,}/", "\\1", $preview_subject);
Grundsätzlich ist eine solche Regel also nicht sonderlich schwer zu verwirklichen.

Verfasst: 27.06.2006 23:09
von Xwitz
BB-BF-BM hat geschrieben:Aber zum Beispiel "Loginprobleme" ist (im Vergleich zu manchen anderen Themen) kein dummer Titel.
und was ist zum Beispiel mit "Fetter Fehler!!!" Der würde nicht gematched, da es ZWEI Worte sind, auch wenn eins nichtssagend ist...
Man nimmt "Loginprobleme" nicht mit in die Liste auf und gut. Daß der Mod nicht jeden sinnlosen Titel sperren kann sollte jedem klar sein.
mgutt hat geschrieben:aber ich merke an der Resonanz, dass es auch andere Admins gibt, die es gerne vermeiden würden 8)
Ich für meinen Teil find es einfach nur interessant. Ich habe viel zu wenige Threads als das man sowas als Problem bezeichnen würde.

Titel zuerst in einzelne Worte zerlegen und Sonderzeichen eliminieren, wenn eine bestimmte Wortzahl überschritten ist oder wenn ein Wort dabei ist, das nicht "verboten" ist, wird der Titel zugelassen sonst nicht. Vielleicht doch nicht so schwer.

Verfasst: 29.06.2006 12:26
von mgutt
Der reine Wahnsinn: (Titel wurde mittlerweile geändert ;) )
http://www.maxrev.de/hhhhhhhhhiiiiiiiii ... t18367.htm

Wird mittlerweile zur Mode :roll:

EDIT:

Erste Tests:

Code: Alles auswählen

$preview_subject = 'hhhhhhhhh???????????????iiiiiiiiiiillllllll!!!!!!!!!ffffffffffffffffffffffffeeeeeeee!!!!!!!!!!?????????????';

$preview_subject = preg_replace("/([\W]){4,}/", "\\1", $preview_subject);

echo($preview_subject);

// result: hhhhhhhhh?iiiiiiiiiiillllllll!ffffffffffffffffffffffffeeeeeeee?
Die Frage ist wie man Wiederholungen erkennt, ohne gleiche gesamte Zeichengruppen zu reduzieren. :-?

Verfasst: 29.06.2006 17:30
von Xwitz
Es geht vielleicht eleganter aber ich würde den gesamten Titel in Einzelzeichen zerlegen und jeden der Reihe nach mit dem Nachfolger vergleichen. Wenn gleich einen Zähler hochzählen, sonst Zähler auf Null setzen. Man müßte aber aufpassen, Buchstaben können regulär drei mal hintereinander vorkommen.

Du könntest auch prüfen ob nach dem Ersetzen der String mit dem Ausgangsstring übereinstimmt.

PS: Deinen code verstehe ich aber so wie so nicht (was an mir liegt).

Verfasst: 29.06.2006 18:09
von mgutt
Die Frage ist dann aber wie schnell das noch ist, wenn so eine Schleifenüberprüfung bei jedem Titel gemacht wird :-?

Wegen dem Verständnis schau mal hier:
http://www.skdevelopment.com/php-regula ... ssions.php

Sonst musst Du nur die Syntaxe kennen:
\d
any decimal digit

\D
any character that is not a decimal digit

\s
any whitespace character

\S
any character that is not a whitespace character

\w
any "word" character

\W
any "non-word" character
Google konnte mir auch noch nicht wirklich helfen. Mal sehen ob ich was finde :D

Verfasst: 29.06.2006 22:16
von Xwitz
mgutt hat geschrieben:Die Frage ist dann aber wie schnell das noch ist, wenn so eine Schleifenüberprüfung bei jedem Titel gemacht wird :-?
Weiß ich nicht aber weißt Du wie schnell dein Code ist? Ich habe mich die letzten 5 Monate mit Laufzeiten von Befehlen und Programmstrukturen beschäftige (aber nicht php) und der Umfang des Quellcodes hat damit recht wenig zu tun. Bei x^6 bis x^16 konnte ich mit einer Schleife gegenüber dem vorgesehenen Befehl bis 70% Prozessorzeit sparen (vermutlich eine Schwachstelle des Compilers).

Reguläre Ausdrücke kenne ich, nur habe ich mich damit nicht groß beschäftigt und ehrlich gesagt z.Z. auch keinen Bock auf Syntax Nummer 10. ;)

Kann man bei php die Programmlaufzeit messen? Mit microtime() müßte man schon was rausbekommen.