| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

21-09-2011, 15:08
|
|
chefdesigner
Registrierter Benutzer
|
|
Registriert seit: Oct 2003
Ort: Bayern
Beiträge: 257
|
|
Mehrere Zeilenumbrüche durch einen Zeilenumbruch ersetzen
Hallo zusammen,
ich würde gerne den Quellcode meiner Unterseiten automatisch von unnötigen Zeilenumbrüchen säubern. Dazu lade ich mir die Seite mit der Funktion file_get_contents() und lasse dann verschiedene Replace-Funktionen drüber laufen. - Es sollen nicht nur unnötige Zeilenumbrüche, sondern auch andere Dinge ersetzt werden. - Das klappt soweit auch alles, bis auf die Zeilenumbrüche. Da es sein kann, dass beispielsweise 6 Zeilenumbrüche hintereinander stehen und in einem anderen Teil der Seite nur 4, habe mich folgender Funktion bedient:
PHP-Code:
$code = preg_replace('/(?:(?:\r\n|\r|\n)\s*){2}/s', "\n\n", $code);
Damit versuche ich mehrere Zeilenumbrüche durch einen einzigen Zeilenumbruch zu ersetzen. Irgendwie funktioniert das aber nur bedingt. Teilweise klappt es, teilweise nicht.
Kann mir jemand helfen?
__________________
Das Genie überblickt das Chaos!
Wer Rechtschreibfehler findet, darf sie behalten!
|

21-09-2011, 15:14
|
TobiaZ
 Moderator
|
|
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.188
|
|
Quantifier {2} bedeutet: GENAU 2 Vorkommen. Du willst aber alles ab zwei und mehr.
Mir ist auch nicht ganz klar, warum du 2 Zeilenumbrüche angibst. Du willst ja nicht nur die geraden Vorkommen abdecken, sondern auch die ungeraden.
Geändert von TobiaZ (21-09-2011 um 15:18 Uhr)
|

21-09-2011, 15:26
|
|
chefdesigner
Registrierter Benutzer
|
|
Registriert seit: Oct 2003
Ort: Bayern
Beiträge: 257
|
|
Hmm, da hast du wohl Recht... Sah auch ursprünglich etwas anders aus. Hab da einiges probiert. Wie kann ich denn den Quantifier so ändern, dass er 2 UND mehr abdeckt? Kann ja nicht alles aufzählen, oder? Geht das mit {2,} ?
__________________
Das Genie überblickt das Chaos!
Wer Rechtschreibfehler findet, darf sie behalten!
|

21-09-2011, 15:45
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
PHP-Code:
"/(?:[ \t]*(?:\n|\r\n?)){2,}/"
Gruß,
Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
Geändert von AmicaNoctis (21-09-2011 um 15:47 Uhr)
|

01-10-2011, 13:16
|
|
chefdesigner
Registrierter Benutzer
|
|
Registriert seit: Oct 2003
Ort: Bayern
Beiträge: 257
|
|
Hey Amica, hey TobiaZ
vielen Dank für eure Antworten. Habe das jetzt wie folgt verwendet, aber irgendwie hat das nicht zum gewünschten Effekt geführt.
PHP-Code:
$code = preg_replace('/(?:[ \t]*(?:\n|\r\n?)){2,}/', "\n", $code);
Kann mir jemand noch einen Tipp geben, was ich hier jetzt noch für einen Fehler drin habe?
Im Endeffekt soll der Quellcode einer Seite dargestellt werden. HTML-Tags etc. sollen alle rausgefiltert werden (klappt soweit auch) und anschließend soll eben der reine Text ausgegeben werden. Allerdings werden aktuell zum Teil 10 und mehr Zeilenumbrüche nacheinander ausgegeben. Ziel soll jedoch sein, höchstens einen einzigen Zeilenumbruch zwischen zwei Absätzen zu haben.
Hat jemand einen Tipp für mich, wieso das mit oben angegebenem Code nicht funktioniert?
__________________
Das Genie überblickt das Chaos!
Wer Rechtschreibfehler findet, darf sie behalten!
|

01-10-2011, 13:56
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Funktioniert prima:
PHP-Code:
<?php // Die Umbrüche sind auch noch mit Leerzeichen und Tabs dazwischen. $code = <<<'EOD' kdfaksdjfaödkjf kj ölkdjfaösdjfa
adf foo EOD; $code = preg_replace('/(?:[ \t]*(?:\n|\r\n?)){2,}/', "\n", $code); echo $code; ?>
Edit: Wenn du zufällig meinst, dass du eine leere Zeile zwischen zwei Absätzen haben willst, musst du mit "\n\n" ersetzen, denn eine leere Zeile sind zwei Zeilenumbrüche. Präzise Formulierungen führen schneller zu einer präzisen Lösung.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
Geändert von AmicaNoctis (01-10-2011 um 14:00 Uhr)
|

01-10-2011, 15:06
|
|
chefdesigner
Registrierter Benutzer
|
|
Registriert seit: Oct 2003
Ort: Bayern
Beiträge: 257
|
|
closed
Hey Amica,
okay, du hattest Recht. Sorry.
Ich hatte zuvor ein strip_tags eingebaut, das dann einiges rausgefiltert hat und dadurch das Ergebnis verfälschte.
Funktioniert wunderbar.
Vielen Dank nochmal!
__________________
Das Genie überblickt das Chaos!
Wer Rechtschreibfehler findet, darf sie behalten!
|
LinkBacks (?)
LinkBack to this Thread: http://www.php-resource.de/forum/php-developer-forum/102212-mehrere-zeilenumbrueche-durch-einen-zeilenumbruch-ersetzen.html
|
| Erstellt von |
For |
Type |
Datum |
| Unerlaubte Zeilenumbrüche-GMX-Web-Suche |
This thread |
Refback |
15-05-2012 22:30 |
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|