PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Rebellion der Zeilenumbrüche >_<



Tomarus
03.07.2005, 19:13
Moin,
ein recht simples Problem im Grunde, aber ich werd einfach nicht schlau daraus, woran's liegt >_<
Also: Ich habe eine Datei (sozusagen eine Konfigurationsdatei). Diese lese ich mir mittels file_get_contents ein und habe sie nun in der $tmp. Nun will ich aus der Datei alle Leerzeichen und Zeilenumbrüche entfernen. Leerzeichen sind kein Problem:

$tmp = str_replace (' ', '', $tmp);
Funktioniert wunderbar. Nun kommen die Zeilenumbrüche. Erster Versuch, wie ich's normalerweise mach, nämlich ganz einfach:

$tmp = str_replace ('
', '', $tmp);
Funktioniert nicht - Die Zeilenumbrüche sind noch da. Gut, schau ich eben nach, wie das mit der verschiedenen Zeilenumbruchdarstellung war ... also neuer Versuch:

$tmp = str_replace ('
', '', $tmp);
$tmp = str_replace ('\n', '', $tmp);
$tmp = str_replace ('\r\n', '', $tmp);
Aber nichts: Die Zeilenumbrüche sind immer noch da (ich lasse den String dann immer mal ausgeben).
Mal komplizierter:

$tmp = str_replace ('
', '', $tmp);
$tmp = str_replace ('\n', '', $tmp);
$tmp = str_replace ('\r\n', '', $tmp);
$tmp = preg_replace ('#(.*)\n(.*)#Uis', '\\1\\2', $tmp); # Und das auch noch mit den obrigen Methoden ...
Wieder nichts >_<

Die Datei enthält im Grunde stinknormale Zeilenumbrüche - Das tut sie auch, nachdem ich sie mir per file_get_contents hole, und auch, nachdem ich mit preg_replace (anhand von XML-Tags) einen speziellen Teil heraushole. Immer stinknormale Zeilenumbrüche - Aber sie wollen nicht weg >__>
Ich schau also im PHP-Manual nach - Das einzig brauchbare, das ich finde - php_strip_whitespace - ist erst ab PHP5 verfügbar >_<

Die rebellierenden Dateien wären diese (http://www.tomarus.de/cms/templates/1/style.xml) und diese hier (http://www.tomarus.de/cms/templates/2/style.xml), - Da hole ich den default-Teil raus. Wiegesagt, wenn ich mir nur den ausgeben lasse, sieht er genau so aus, wie in der Datei, nur wollen eben nach dem anschließenden Ersetzungsmarathon die Zeilenumbrüche nicht weg ;__;
Kann mir wer sagen, wieso? ;__;

dadie
03.07.2005, 19:23
Dumme idee evtl.

Verusch einfach mal


$tmp = str_replace ("\n", "", $tmp);
$tmp = str_replace ("\r\n", "", $tmp);



evtl. ist es mit dem \n in ' ' sowie es mit Variablen ist

Edit:

evtl. hilft das noch

http://de2.php.net/manual/de/function.rtrim.php

Tomarus
03.07.2005, 19:29
Dumme idee evtl.

Verusch einfach mal


$tmp = str_replace ("\n", "", $tmp);
$tmp = str_replace ("\r\n", "", $tmp);



evtl. ist es mit dem \n in ' ' sowie es mit Variablen ist
Hmm ... ne, funktioniert genau so wenig.


Edit:

evtl. hilft das noch

http://de2.php.net/manual/de/function.rtrim.php
Ne ... entfernt die Whitespaces eben nur am Stringende (bzw. ltrim am Anfang und trim an Anfang und Ende), das bringt nicht so wirklich viel ...

Manni
03.07.2005, 19:35
Versuchs mal damit:

...
$zeilen = file("datei");
$zeilen = array_map("trim", $zeilen);
$content = implode("", $zeilen);
...

Ist ungetestet, sollte aber klappen...

EDIT: Hups... array_map()... :D

Tomarus
03.07.2005, 19:49
Hm, tatsächlich. Abgesehen davon, dass es array_map und nicht map heißt. Aber egal, vielen Dank :)

dead_orc
03.07.2005, 21:44
Die Version von dadie müsste auch gehen, wenn man die beiden Zeilen vertauscht. Sonst bleibt bei einem Windows-Zeilenumbruch immer ein \r am Ende der Zeile stehen. Noch idealer wäre allerdings folgende Lösung:

$tmp = str_replace("\r", "", $tmp);
$tmp = str_replace("\n", "", $tmp);
Damit werden alle Zeilenumbrucharten entfernt. (Sollte zumindest so sein)

Jesus_666
04.07.2005, 09:29
Man kann mit regulären Ausdrücken sehr einfach jeglichen Whitespace aus einem String entfernen:

$bla = preg_replace("/\s/", "", $bla);
Ja, das war's schon. Regexps sind toll, oder?

Chocwise
04.07.2005, 17:21
...Ja, das war's schon. Regexps sind toll, oder?
http://img57.imageshack.us/img57/5337/orly4rp.jpg

BTW: Wo bleibt eigentlich das RegExp-Tutorial, das du uns mal schreiben wolltest? :D


EDIT: Oi, verpennt. Man dankt recht herzlich. :D

Rolus
04.07.2005, 17:29
BTW: Wo bleibt eigentlich das RegExp-Tutorial, das du uns mal schreiben wolltest? :D
Das bleibt im Programmierforum, denke ich mal. Hier (http://www.multimediaxis.de/showthread.php?t=56502). ;)

freundliche Grüße, Rolus

Manni
04.07.2005, 17:30
Schau dir das (http://www.multimediaxis.de/showthread.php?t=56502) mal an.

EDIT: Mist -_-