PHP Zeilenumbrüche entfernen

Webmaster Pazi

Cadet 3rd Year
Registriert
Dez. 2009
Beiträge
46
Hallo Community!

Ich Arbeite gerade mit Ajax und PHP an einem Projekt und komme gerade nicht weiter, weil PHP mir die Zeilenumbrüche nicht entfernt.

Ich lese für die Ausgabe an Ajax eine Datei ein, die etwas HTML-Code enthält, und da ich eben den Code übersichtlich haben möchte, habe ich einen verschaltelten Code. So, da der Browser aber mehrzeiligen Code nicht annimmt, sondern nur 1 Zeiligen wegen einem Array-Output für Ajax (das sieht ca. so aus: new Array('status', 'htmlcode'); ), benötige ich jetzt eine kleine funktion, damit der Code in einer Zeile ausgegeben wird.

Code:
$datei = preg_replace('/\\r\\n/', '', $datei);

funktioniert bei mir Lokal am Rechner (Windows mit XAMPP), jedoch Online am Server (Linux auf bplaced) dann nicht mehr.

Habt ihr da vielleicht eine Idee was das Problem sein könnte oder eine Lösung?

Danke schonmal :D
 
Hi,

ist die PHP-Version die gleiche? Mal getestet, wenn du das Ergebnis in einer anderen Variablen speicherst?

Da Linux: Zugriffsrechte passen?

VG,
Mad
 
Mach aus
Code:
$datei = preg_replace('/\\r\\n/', '', $datei);
mal
Code:
$datei = preg_replace('/\\r/', '', $datei);
$datei = preg_replace('/\\n/', '', $datei);
Auf Linux ist ein Zeilenumbruch nur \n, auf Windows \r\n.
 
Die Zeilenumbrüche werden anscheinend beim FTP-Upload konvertiert:

$regex_pattern = platform_is_windows() ? '/\\r\\n/' : '/\\n/';
$file = preg_replace($regex_pattern, '', $file);

Die neue Funktion müsste noch mit Leben gefüllt werden :D
 
Madman1209 schrieb:
Hi,

ist die PHP-Version die gleiche? Mal getestet, wenn du das Ergebnis in einer anderen Variablen speicherst?

Da Linux: Zugriffsrechte passen?

VG,
Mad

Ja, beide Versionen sind gleich und ja, er gibt die Datei ja aus, jedoch mit umbrüchen :(

Turas schrieb:
Mach aus
Code:
$datei = preg_replace('/\\r\\n/', '', $datei);
mal
Code:
$datei = preg_replace('/\\r/', '', $datei);
$datei = preg_replace('/\\n/', '', $datei);
Auf Linux ist ein Zeilenumbruch nur \n, auf Windows \r\n.

Hmm... nein das funktioniert irgendwie auch nicht, bekomme den selben output :mad:

Oder liegt das vielleicht am Editor mit der Formartierung/Codierung?
 
Zuletzt bearbeitet:
probier ma
Code:
$datei = preg_replace('/[\r\n]+/', '', $datei)
 
Zuletzt bearbeitet:
PHP:
$datei = str_replace(array("\r\n", "\n"), '', $datei);

ein regulärer Ausdruck ist hier einfach nur oversized
 
Was genau ist der Unterschied @ice...?

PHP:
$mess = str_replace(array("\n", "\r"), '', $mess);
 
reguläre Ausdrücke sind eine sehr rechenintensive Sache, da müsste ich jetzt auf reguläre Sprachen, aktzeptierende Zustände und den Fakt, dass es immer über backtracking realisiert wird [1] eingehen, spare ich mir aber einfach mal.


Achso, die frage bezog sich auf dein Snippet.
Du löschst auch alle Carriage-Returns, ich lösche das Carriage Return nur, wenn es auch mit einem Linefeed auftaucht (Windows Zeilenumbruch), denn möglicherweise steht da irgendwoe noch ein Carriage Return drinne, was erhalten bleiben soll.


[1] bis auf re2 welches effizient Automaten nutzt
 
Okay, es funktioniert :) Hatte nur vergessen, dass ich eine if drinne hatte die bestimmte, ob die ausgabe debugged werden soll oder nicht und ich habe ständig an der falschen stelle den replace mit den umbrüchen probiert ;)

mit:

Code:
$datei = preg_replace('/\\r/', '', $datei);
$datei = preg_replace('/\\n/', '', $datei);

danke vielmals :)
 
Zurück
Oben