Schrift
[thread]8284[/thread]

Zeilenumbrüche in Webseiten entfernen, wie? (Seite 2)

Leser: 2


<< |< 1 2 >| >> 16 Einträge, 2 Seiten
Linuxer
 2006-08-31 23:07
#69447 #69447
User since
2006-01-27
3891 Artikel
HausmeisterIn

user image
Laut perldoc perlop ist tr eher transliterate ;o)
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
sid burn
 2006-08-31 23:49
#69448 #69448
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
Quote
wenn du wirklich whitespaces UND zeilenumbrüche raushaben willst machs so

Zeilenumbrüche sind Whitespaces. ;)

Zu Whitespaces gehören alle Zeichen die bei einem Druck keine Tinte verschwenden würde. Dazu zählt "\n", "\r", "\t" " " und weitere Zeichen. "\s" enthält also alle oben genannten Zeichen.

Code: (dl )
$data =~ s/^\s*(.*?)\s*$/$1/mg;

Das entfernt deswegen nicht die Newline Zeichen da das Dollar bloß ein Anker wie "\b" ist. Es frisst das "\n" nicht auf, es gehört also nicht zum Match. Wird also nicht gelöscht, und bleibt im String unberührt stehen. Dieser Anker matcht immer vor dem Newline.


Ansonsten, vielleicht passt das ja besser auf deiner Lösung?
Code: (dl )
s/\s*\n\s*//g

So wie du deine Regex geschrieben hast, willst du anscheind nur die Whitespace Zeichen am Anfang und am Ende einer Zeile entfernen? Dann sollte es damit gehen.

Wenn du unter Windows Arbeitest und Windows Dateien bearbeitest ist die Verwendung von "\n" nicht verkehrt da es dann zu einem "\r\n" wird.

Zwar wird unter GNU/Linux ein "\n" auch nur ein "\n", würde aber trotzdem keine Probleme machen, auch wenn du Windows Formatierte Text Dateien bearbeites. Da das "\r" dann nämlich vom "\s" aufgefressen werden würde.\n\n

<!--EDIT|sid burn|1157053996-->
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
vayu
 2006-09-01 10:04
#69449 #69449
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
[quote=sid burn,31.08.2006, 21:49]
Quote
wenn du wirklich whitespaces UND zeilenumbrüche raushaben willst machs so

Zeilenumbrüche sind Whitespaces. ;)

Zu Whitespaces gehören alle Zeichen die bei einem Druck keine Tinte verschwenden würde. Dazu zählt "\n", "\r", "\t" " " und weitere Zeichen. "\s" enthält also alle oben genannten Zeichen.[/quote]
auch wenn es laut definition vllt so ist ....

ich glaub die meisten (inklusive mir) meinen leerzeichen oder TABS, wenn man von Whitespaces spricht, und ein \n wenn man Zeilenumbrüche sagt. würde auch zum allgemeinen Verständniss beitragen.\n\n

<!--EDIT|vayu|1157090782-->
sid burn
 2006-09-01 12:15
#69450 #69450
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
[quote=vayu,01.Sep..2006, 08:04]auch wenn es laut definition vllt so ist ....

ich glaub die meisten (inklusive mir) meinen leerzeichen oder TABS, wenn man von Whitespaces spricht, und ein \n wenn man Zeilenumbrüche sagt. würde auch zum allgemeinen Verständniss beitragen.[/quote]
Ich finde nicht das es zum Allgemeinen Verständnis beiträgt. Wenn ich Leerzeichen meine dann sage Ich Leerzeichen. Wenn ich Tabs meine dann sage ich Tabs undw enn ich Zeilunumbrüche sage, dann meine Ich Zeilenumbrüche. ;)

Wenn man bei Regexen ist und halt eben Whitespaces sagt, dann gehört eben alles zusammen.

Ich habe auch schon öfters in Regexen sollche Konstrukte gesehen
Code: (dl )
[\s\t\n]*
Was natürlich absolut unnötig ist, und ein normales
Code: (dl )
\s*
hätte gereicht und wäre auch übersichtlicher.

Solche sachen passieren halt nur weil man Whitespaces nicht richtig definiert hat, oder die Leute es in irgendwelchen Foren aufgegriffen haben (z.B. diesem hier) und dann manche Sachen unnötig kompliziert machen. Ab und zu kann dies auch zu negativen Effekten führen. Z.B. wenn man Leerzeichen und Tabs entfernt haben möchte, aber nicht "\n", dann wundert man sich warum Newlines auf einmal doch weg sind, und es wird wieder im Forum nachgefragt warum dies so ist.

Das gleiche gilt auch für den Punkt. "." Dort sagen ja auch viele das es auf "jedes zeichen" matcht. Was auch falsch ist. Wenn du unterschiedliche Einführungen zu Regexen siehst, dann habe ich diese Aussage schon öfters gelesen. Spätestens wenn man über Newline Zeichen hinweg matchen möchte merkt man auf einmal das es irgendwie nicht klappt und fragt erneurt im Forum.

Das gleiche ist mit den Optionen /m und /s. Die meisten nicht richtig erklärt werden. Und die Zusammenhänge zwischen /s und dem Punkt z.B. nicht erläutert wird. Öfters Wissen die Leute anscheind nicht wann sie welche Option benutzen müssen, und probieren es einfach so lange aus, bis eine Kombination passt.

Also wenn dann bin ich für die "richtige" Definition. Damit hat man in Zukunft einfach weniger probleme. Dies gilt für den Frager, und dem der Antwort.\n\n

<!--EDIT|sid burn|1157098660-->
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
renee
 2006-09-01 13:17
#69451 #69451
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
jein, manchmal ist es für den Fragenden aber auch etwas verwirrend wenn man erst 5 Seiten Ausführung macht um dann eine Zeile Code zu schreiben. Dann könnte man sich auch mit einem Hinweis auf ein Buch begnügen.
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
pq
 2006-09-03 19:10
#69452 #69452
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
[quote=vayu,31.08.2006, 11:04]\s sind whitespaces ...

wenn du zeileumbrüche raushaben willst nimm \n[/quote]
vielleicht einfach mal selbst ausprobieren, bevor man sowas behauptet =)
Code: (dl )
1
2
$ perl -wle 'print "newline is whitespace" if "\n" =~ m/\s/'
newline is whitespace

wie du siehst, ist es eine sache von ein paar sekunden, das auszuprobieren.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
<< |< 1 2 >| >> 16 Einträge, 2 Seiten



View all threads created 2006-08-31 12:19.