php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 18.07.2011, 22:31  
Neuer Benutzer
 
Registriert seit: 20.06.2009
Beiträge: 12
PHP-Kenntnisse:
Anfänger
SeppDepp befindet sich auf einem aufstrebenden Ast
Standard PHP, UTF-8 und Zeilenumbrüche (CR LF)

Ich lasse mit PHP eine XML Datei erstellen, die nur Zeilenumbrüche der Sorte \n enthalten soll.

Seitdem alles auf UTF-8 umgestellt ist, funktioniert das Ersetzen aber nicht mehr:

PHP-Code:
$text preg_replace("/(\r\n)|(\r)/","\n"$text); 
Das wird auf alle Texte angewendet, die mit PHP in eine XML Datei geschrieben werden.

ich habe folgendes getestet:
PHP-Code:
echo '<br>doppelte Zeilenumbrüche: 'preg_match_all("/(\r\n)|(\r)/",$text,$output); # wieviele gefunden?
$test1 $text;
        
$text preg_replace("/(\r\n)|(\r)/","\n"$text); #ersetzen
$test2 $text;
if(
$test1 == $test2) echo ' NICHT GEÄNDERT';
echo 
'-> 'preg_match_all("/(\r\n)|(\r)/",$text,$output);#wieviele gibt es noch? 
die Ausgabe sieht dann z.B. so aus:
Code:
doppelte Zeilenumbrüche: 0 NICHT GEÄNDERT-> 0
doppelte Zeilenumbrüche: 16-> 0
doppelte Zeilenumbrüche: 0 NICHT GEÄNDERT-> 0
doppelte Zeilenumbrüche: 14-> 0
doppelte Zeilenumbrüche: 0 NICHT GEÄNDERT-> 0
wenn doppelte Zeilenumbrüche gefunden werden, dann wird $text durch preg_replace() auch geändert, sonst nicht. Trotzdem kommen am Ende doppelte Zeilenumbrüche heraus: CR+LF

Woran liegt denn das..?
SeppDepp ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 18.07.2011, 22:43  
Erfahrener Benutzer
 
Registriert seit: 25.05.2010
Beiträge: 852
PHP-Kenntnisse:
Anfänger
Trainmaster wird schon bald berühmt werden
Standard

In Verbindung mit UTF-8 eventuell den "u"-Modifier ausprobieren: http://php.net/manual/en/reference.p....modifiers.php

PHP-Code:
$text preg_replace("/(\r\n)|(\r)/u","\n"$text); 
Trainmaster ist offline   Mit Zitat antworten
Alt 18.07.2011, 22:46  
Erfahrener Benutzer
 
Registriert seit: 11.04.2011
Beiträge: 260
PHP-Kenntnisse:
Fortgeschritten
lcrash wird schon bald berühmt werden
Standard

Ohne mich da genau rein gedacht zu haben, aber:
Zitat:
u (PCRE8)
This modifier turns on additional functionality of PCRE that is incompatible with Perl. Pattern strings are treated as UTF-8. This modifier is available from PHP 4.1.0 or greater on Unix and from PHP 4.2.3 on win32. UTF-8 validity of the pattern is checked since PHP 4.3.5.
Was ist denn an \r\n so verkehrt? Sollte jeder XML-Parser mit umgehen können.
lcrash ist offline   Mit Zitat antworten
Alt 18.07.2011, 22:59  
Neuer Benutzer
 
Registriert seit: 20.06.2009
Beiträge: 12
PHP-Kenntnisse:
Anfänger
SeppDepp befindet sich auf einem aufstrebenden Ast
Standard

Der u-Modifier hat leider nicht geholfen.

\r\n ist verkehrt, weil die XML Datei von Flash geladen wird und dort \r und \n jeweils ein Zeilenumbruch ist, also einer zuviel.
SeppDepp ist offline   Mit Zitat antworten
Alt 19.07.2011, 04:40  
Erfahrener Benutzer
 
Registriert seit: 13.05.2011
Beiträge: 188
PHP-Kenntnisse:
Fortgeschritten
php1704 wird schon bald berühmt werden
Standard

Zitat:
\r\n ist verkehrt, weil die XML Datei von Flash geladen wird und dort \r und \n jeweils ein Zeilenumbruch ist, also einer zuviel.
Actionscript 2:
Code:
var my_xml = new XML();
my_xml.ignoreWhite = true;
my_xml.onLoad = function(success) {
    if (success){
        trace(this);
    }
}
my_xml.load("my_document.xml");
Es gibt zwar mehr Möglichkeiten eine XML-Datei in Flash einzulesen, aber sowas wie "ignore whitespace" sollte es immer geben.

Grüße.
php1704 ist offline   Mit Zitat antworten
Alt 19.07.2011, 21:40  
Neuer Benutzer
 
Registriert seit: 20.06.2009
Beiträge: 12
PHP-Kenntnisse:
Anfänger
SeppDepp befindet sich auf einem aufstrebenden Ast
Standard

Ich benutze ActionScript 3, ignoreWhite hat damit aber auch gar nichts zu tun (Ist diese Eigenschaft auf true gesetzt, werden Textknoten, die nur Leerräume enthalten, bei der Analyse gelöscht.)

Es ist ein Problem, welches in PHP gelöst werden muß. Seitdem die Dokumente/Strings (alles eben) auf UTF-8 umgestellt sind, klappt das umwandeln der Zeilenumbrüche nicht mehr.
SeppDepp ist offline   Mit Zitat antworten
Alt 19.07.2011, 21:59  
Erfahrener Benutzer
 
Registriert seit: 13.05.2011
Beiträge: 188
PHP-Kenntnisse:
Fortgeschritten
php1704 wird schon bald berühmt werden
Standard

"ignore whitespace" sorgt dafür, dass Leerzeichen, Tabs, ZEILENUMBRÜCHE die ZWISCHEN den Elementen stehen nicht als Extra-Textknoten angelegt werden.

Aber einen Tipp einfach mal auszuprobieren ist wohl zu viel verlangt.

Grüße.
php1704 ist offline   Mit Zitat antworten
Alt 19.07.2011, 22:06  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Ich vermute mal, er redet von Knoteninhalten. Trotzdem solle jeder gescheite XML-Parser mit allen Zeilenumbrüchen klarkommen.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 19.07.2011, 22:49  
Erfahrener Benutzer
 
Registriert seit: 13.05.2011
Beiträge: 188
PHP-Kenntnisse:
Fortgeschritten
php1704 wird schon bald berühmt werden
Standard

Ahh...ok...nun hat's geklicked. An den Inhalt der Knoten ansich hab ich gar ned gedacht.

Grüße.
php1704 ist offline   Mit Zitat antworten
Alt 20.07.2011, 21:38  
Neuer Benutzer
 
Registriert seit: 20.06.2009
Beiträge: 12
PHP-Kenntnisse:
Anfänger
SeppDepp befindet sich auf einem aufstrebenden Ast
Standard

Richtig, es geht um Zeilenumbrüche in einem Text, der Inhalt eines Knotens ist. Ich dachte das wäre klar.

Dass \r\n für Flash zwei Zeilenumbrüche sind, daran kann ich nichts ändern.
SeppDepp ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
zeilenumbrüche im newsscript Komatruppe PHP Tipps 2009 3 24.08.2009 12:16
[Erledigt] nl2br() verursacht ganz viele Zeilenumbrüche Jeffry PHP Tipps 2008 6 25.06.2008 15:06
zeilenumbrüche bei aus datei gelesenem text erhalten Crypi PHP Tipps 2008 6 03.06.2008 16:57
Regex löscht alle Zeilenumbrüche. Anduril PHP Tipps 2006 3 16.10.2006 22:36
Zeilenumbrüche werden nicht beachtet jacos PHP Tipps 2006 8 27.04.2006 16:05
nochmal Zeilenumbrüche Calli PHP Tipps 2005-2 3 28.09.2005 09:36
Zeilenumbrüche m-elssner PHP Tipps 2005-2 9 21.09.2005 16:59
Mal wieder, aber anders: textarea und Zeilenumbrüche PHP Tipps 2005-2 5 23.08.2005 14:40
Zeilenumbrüche vollständig eliminieren PHP Tipps 2005-2 9 23.08.2005 05:33
Zeilenumbrüche in der Funktion mail() Igäl PHP Tipps 2005 7 19.04.2005 12:35
Zeilenumbrüche in BBCodes ersetzen... PHP Tipps 2005 1 06.04.2005 12:06
csv Datei: Zeilenumbrüche berücksichtigen PHP Tipps 2005 5 17.02.2005 11:54
Zeilenumbrüche einfügen PHP Tipps 2004-2 6 10.11.2004 17:10
Zeilenumbrüche innerhalb eine string-Variable??? PHP Tipps 2004 6 20.08.2004 17:25
textarea zeilenumbrüche umwandlen?? PHP Tipps 2004 1 21.06.2004 11:15

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
utf-8 zeilenumbruch, utf8 zeilenumbruch, zeilenumbruch utf8, php cr, utf-8 cr, zeilenumbruch utf-8, crlf php, php crlf, utf zeilenumbruch, crlf utf8, utf-8 cr lf, php cr lf, php utf-8 zeilenumbruch, utf-8 zeilenumbruch php, utf8 crlf, php crlf bei xml, zeileumbruch utf-8, cr utf8, php utf8 zeilenumbruch, crlf per php

Alle Zeitangaben in WEZ +2. Es ist jetzt 01:00 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum