RegEx gegen Plenken, möglicherweise kritisch?
Texter mit x
- php
0 Sven Rautenberg0 seth0 Blaubart0 Texter mit x0 seth
Hallo,
ich möcht eine RegEx gegen Plenken zur Diskussion stellen. Ich habe sie getestet und sie funktionierte wie gewünscht, aber vielleicht übersehe ich unerwünschte Nebeneffekte.
Entfernt werden sollen Leerzeichen vor "," "?" "!" und "." aber nicht vor "..."! (Doppelte Leerzeichen wurden schon vorher entfernt.)
$text = preg_replace( '/ (?)| (!)|( .{3})| (.{1})| (,)/', '$1$2$3$4$5', $text);
Moin!
Hallo,
ich möcht eine RegEx gegen Plenken zur Diskussion stellen. Ich habe sie getestet und sie funktionierte wie gewünscht, aber vielleicht übersehe ich unerwünschte Nebeneffekte.
Entfernt werden sollen Leerzeichen vor "," "?" "!" und "." aber nicht vor "..."! (Doppelte Leerzeichen wurden schon vorher entfernt.)
$text = preg_replace( '/ (?)| (!)|( .{3})| (.{1})| (,)/', '$1$2$3$4$5', $text);
Dein Vorhaben kollidiert selbstverständlich grundsätzlich mit Programmiersprachen, bei denen die Zeichensetzung durchaus zur Übersichtlichkeit mehr Leerzeichen enthält, als bei menschlicher Sprache. Wobei die Variante "Vor Satzzeichen kein Leerzeichen" auch nur für eine Teilmenge von menschlichen Sprachen gilt - die Franzosen beispielsweise setzen dort absichtlich Leerzeichen.
- Sven Rautenberg
@@Sven Rautenberg:
die Franzosen beispielsweise setzen dort absichtlich Leerzeichen.
Aber doch hoffentlich keine U+0020, das wäre ziemlich blöd. Vgl. [ZITAT916]
Live long and prosper,
Gunnar
Wenn das alles ist ... ;-) Danke
Es ist nur für natürliche Sprache gedacht, ich habe bei Quellcode auch noch nie erlebt, daß jemand Plenken bemängelt hätte. :-)
Die Ausnahme mit dem französischen Fragezeichen war mir auch schon bekannt aber es sollen auf absehbare Zeit nur deutsche Texte verarbeitet werden.
Ich hatte eher an wie auch immer geartete "kryptische" Probleme gedacht, weil ich noch nicht so firm bin mit RegEx. Es hatte mich z.B. verwundert, daß man '$1$2$3$4$5' einfach hintereinander schreiben kann, ich hatte es einfach nur probiert.
Leerzeichen und Satzzeichen mit Zeilenumbruch dazwischen könnten auch vorkommen aber das wäre kein typisches Plenken. Über jeden möglichen Mist will ich mir auch keine Gedanken machen.
Wichtig ist, daß keine Zusätzlichen Fehler generiert werden.
gudn tach!
ich möcht eine RegEx gegen Plenken zur Diskussion stellen. Ich habe sie getestet und sie funktionierte wie gewünscht, aber vielleicht übersehe ich unerwünschte Nebeneffekte.
zumindest funktionieren dann keine mit beispielen versehenen gespraeche mehr uebers plenken.
$text = preg_replace( '/ (?)| (!)|( .{3})| (.{1})| (,)/', '$1$2$3$4$5', $text);
kuerzer:
preg_replace('/ ([?!,]|.(?!..))/', '$1', $text);
oder
preg_replace('/ (?=[?!,.])(?!.{3})/', '', $text);
meinung:
je nachdem wo du das einsetzen willst, waere so ein automatismus mehr oder weniger angebracht. der nutzen einer solchen funktion ist z.b. in einem forum imho zu gering; im gegensatz zu dem schwer ueberschaubaren bereich des moeglichen nervens/schadens.
prost
seth
Tach.
je nachdem wo du das einsetzen willst, waere so ein automatismus mehr oder weniger angebracht. der nutzen einer solchen funktion ist z.b. in einem forum imho zu gering
Stimmt. :)
kuerzer:
preg_replace('/ ([?!,]|.(?!..))/', '$1', $text);
oder
preg_replace('/ (?=[?!,.])(?!.{3})/', '', $text);
Was das macht oder besser gesagt wie es was macht, werde ich mir anschauen.
meinung:
je nachdem wo du das einsetzen willst, waere so ein automatismus mehr oder weniger angebracht. der nutzen einer solchen funktion ist z.b. in einem forum imho zu gering; im gegensatz zu dem schwer ueberschaubaren bereich des moeglichen nervens/schadens.
Ich habe etwas ähnliches wie einen bbcode Entwickelt, bei dessen Einsatz ungewollt Leerzeichen stehenbleiben oder "entstehen" können. Zur Veranschaulichung auf bbcode übertragen wäre ein Anwendungsfall, wenn man Ende eines Satzes eine url schreibt (gefolgt von einem Punkt). Für die automatische Erkennung der url müßte man ein Leerzeichen setzen, welches dann bei der Ausgabe entfernt werden soll. Es geht also in erster Linie darum Leute die nicht plenken wollen beim Einsatz meines Codes zu entlasten.
Danke noch mal, an alle, für die Einwände.
gudn tach!
Zur Veranschaulichung auf bbcode übertragen wäre ein Anwendungsfall, wenn man Ende eines Satzes eine url schreibt (gefolgt von einem Punkt). Für die automatische Erkennung der url müßte man ein Leerzeichen setzen, welches dann bei der Ausgabe entfernt werden soll.
afaics waere dann der bessere ansatz, die erkennung des urls zu ueberarbeiten, sodass gar nicht erst ein nachtraegliches korrigieren noetig wird.
prost
seth
afaics waere dann der bessere ansatz, die erkennung des urls zu ueberarbeiten, sodass gar nicht erst ein nachtraegliches korrigieren noetig wird.
Du hast mich erwischt, das war kein gutes Beispiel. Aber mein code ist auch kein bbcode.