php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2004-2

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 18.11.2004, 13:02  
inu
Erfahrener Benutzer
 
Registriert seit: 20.11.2003
Beiträge: 244
inu
Standard Regulärer Ausdruck

Hallo Leute,

ich suche einen regulären Ausdruck, der mir bei meinem Problem hilft:

Ich parse eine HTML / XML - Datei. Innerhalb der XML-Datei (siehe unten) verwende ich zur optischen Aufbereitung Zeilenumbrüche (ENTER) und Einrückungen (Tabulator und/oder Leerzeichen).

Während meiner Abarbeitung lese ich die komplette Datei auf einen String ein. Innerhalb des Strings sollen nun diese Zeilenumbrüche und die Tabs/Spaces zwischen den zeichen ">" und "<" entfernt werden.

Könnt Ihr mir helfen?


<kapitel>
<abschnitt>
<unterabschnitt>
</unterabschnitt>
</abschnitt>
</kapitel>
inu ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 18.11.2004, 13:14  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Da müsste eigentlich schon ein str_replace() genügen:
PHP-Code:
$string str_replace(array("\n""\t")), ''$string); 
__________________
Gruss
L
lazydog ist offline  
Alt 18.11.2004, 13:21  
inu
Erfahrener Benutzer
 
Registriert seit: 20.11.2003
Beiträge: 244
inu
Standard

... "\r" ...fehlte noch in der Liste
inu ist offline  
Alt 18.11.2004, 13:23  
inu
Erfahrener Benutzer
 
Registriert seit: 20.11.2003
Beiträge: 244
inu
Standard

Hallo lazydog,

es gibt doch noch ein Problem. Und zwar bei der Verwendung von Leerzeichen beim Einrücken einzelner Zeilen. Ich werde wohl nicht umhin kommen, das doch mit regulären Ausdrücken zu machen, da ja auch noch die Zeichen "<" und ">" zu beachten sind.
inu ist offline  
Alt 18.11.2004, 14:23  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von inu
... "\r" ...fehlte noch in der Liste
Wenn du unter windoof arbeitest, ja. Die Spaces fehlten auch.
Zitat:
Zitat von inu
Und zwar bei der Verwendung von Leerzeichen beim Einrücken einzelner Zeilen. Ich werde wohl nicht umhin kommen, das doch mit regulären Ausdrücken zu machen, da ja auch noch die Zeichen "<" und ">" zu beachten sind.
Falls du innerhalb der Begriffe keine Leerzeichen hast, ginge das auch. Sonst versuch
PHP-Code:
$string preg_replace("/(>)[\n\t\r ]*(<)/""\$1\$2"$string); 
__________________
Gruss
L
lazydog ist offline  
Alt 18.11.2004, 14:49  
Erfahrener Benutzer
 
Registriert seit: 29.10.2004
Beiträge: 1.781
derHund
Standard

hmm,

wenn ich dich richtig verstanden hab, ...
Code:
#[\s\r\n]*(?=[^>]*<)#U
entfernt alle genannten zeichen, sofern sie nicht zwischen < und > stehen, somit also alle, die zwischen > und < stehen.

so? oder wie?

das würde aber bei
Code:
<tag>
  suppe mit kartoffeln
</tag>
zu dem ergebnis
Code:
<tag>suppemitkartoffeln</tag>
führen ... wenn das gewollt ist?

wenn nicht, poste nochmal einen ausführlichen beispieltext.
derHund ist offline  
Alt 18.11.2004, 15:08  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von derHund
wenn ich dich richtig verstanden hab, ...
Code:
#[\s\r\n]*(?=[^>]*<)#U
entfernt alle genannten zeichen, sofern sie nicht zwischen < und > stehen, somit also alle, die zwischen > und < stehen.
Er wollte zwar alle diese Zeichen entfernen, wenn sie zwischen ">" und "<" stehen, aber wahrscheinlich kommt das aufs gleiche heraus. Wenn du allerdings "\s\r\n" angibst, ist das zuviel des Guten, weil "\s" die andern beiden schon beinhaltet. Deshalb könnte man tatsächlich meinen Ausdruck - mit dem u.U. nötigen, von dir angegebenen Modifier U - als
Code:
"/(>)\s*(<)/U"
schreiben.
__________________
Gruss
L
lazydog ist offline  
Alt 18.11.2004, 16:06  
Erfahrener Benutzer
 
Registriert seit: 29.10.2004
Beiträge: 1.781
derHund
Standard

Zitat:
Zitat von lazydog
Deshalb könnte man tatsächlich meinen Ausdruck - mit [...]
[ ] dir ist der grundlegende unterschied zwischen deinem und meinem pattern bewußt?

kommt halt drauf an, was der threadstarter haben will. es ist mir nicht vollständig klar.
derHund ist offline  
Alt 18.11.2004, 18:07  
inu
Erfahrener Benutzer
 
Registriert seit: 20.11.2003
Beiträge: 244
inu
Standard

Hallo,

im Prinzip können zwischen ">" und "<" jeder beliebige Text stehen (siehe Beispiel von "derHund"). Hier soll aber nur alles zwischen ">" und "Suppe mit Kartoffeln" sowie zwischen "Suppe mit Kartoffeln" und "<" gescannt werden. Der eigentliche Text sollte unberücksichtigt bleiben.
inu ist offline  
 


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
[Erledigt] leeres Klammernpaar nach einem Ausdruck frozen fire PHP Tipps 2008 8 04.07.2008 20:13
Regulärer Ausdruck für Preis (float) Ticos PHP Tipps 2007 13 06.03.2007 20:21
Regulären Ausdruck Übersetzen (preg_match) mAy^daY PHP Tipps 2007 11 04.01.2007 14:00
regulärer ausdruck farant PHP Tipps 2006 3 05.10.2006 12:19
Logischer Ausdruck aus DB überprüfen c!w PHP Tipps 2006 15 12.09.2006 13:36
Regulärer Ausdruck um <> zu entfernen innerhalb von XM becks123 PHP Tipps 2006 25 16.05.2006 15:06
Mit if Abfrage innerhalb eines strings einen Ausdruck suchen tinchen PHP Tipps 2006 4 11.04.2006 10:18
regulärer ausdruck tomson PHP Tipps 2006 11 03.02.2006 09:58
Regul�rer Ausdruck PHP Tipps 2006 3 01.02.2006 19:50
Regulärer Ausdruck: Ping-Zeiten speichern mAy^daY Server, Hosting und Workstations 9 12.01.2006 19:51
Problem mit regul�rem Ausdruck BastianX75 PHP Tipps 2007 5 14.12.2005 14:38
[Erledigt] Regulärer Ausdruck HILFE!! PHP-Fortgeschrittene 6 22.07.2005 16:39
Regulärer Ausdruck mit Negation? PHP-Fortgeschrittene 23 21.07.2005 09:01
Browser skaliert den Ausdruck? HTML, Usability und Barrierefreiheit 3 14.09.2004 19:04
[Erledigt] Regulärer Ausdruck für E-Mail Adressen PHP Tipps 2004 4 05.08.2004 10:36

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
regulärer ausdruck für tab, \regulärer ausdruck\ tabs

Alle Zeitangaben in WEZ +2. Es ist jetzt 23:40 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

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.