Portal > Foren > PHP > PHP-Programmierung > Wie ändere ich folgenden Reg. Ausdruck?
Antwort
 
Themen-Optionen Thema durchsuchen
Alt 12.08.2006, 16:40 Nach oben    #1
Erfahrener Benutzer
 
Registriert seit: 30.10.2005
Beiträge: 287
Standard Wie ändere ich folgenden Reg. Ausdruck?

Hier ist ein Auszug aus meinem DB Backup
Code:
adurch neue Fähigkeiten.\r\n\r\n{img|right|436}\r\n\r\n{img|right|435}\r\n\r\nHier sind die neue
Dort sind zwei von mir gebaute Image Tags die durch die passenden Bilder ersetzt werden. So ein Image Tag kann auch direkt am Anfang des Datensatzes stehen. Aber er hat immer eine eigene Zeile und die Zeile darüber (falls ein Absatz über dem IMG Tag ist) und die darunter ist leer.

Code:
{img|right|436}\r\n\r\n{img|right|435}\r\n\r\nHier sind die neue
Wie ändere ich nun meinen RegExp, das er die beiden obigen Beispiele parst? Unter der Berücksichtung das der IMG Tag einmal ganz am Anfang stehen könnte aber auch mitten im Text. Hier ist der Code den ich derzeit habe, allerdings etwas anders da um diese IMG Tags halt noch ein p Block ist, lasst euch aber davon nicht irritieren.
Code:
$this->pattern = '/\<p>{img\|(left|right)\|(.*?)\}<\/p>/si';
ex³ ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.08.2006, 06:50 Nach oben    #2
Lutz
 
Benutzerbild von MrNiceGuy
 
Registriert seit: 14.08.2005
Ort: Nienburg / Weser
Beiträge: 687
Standard

Also wenn ich mich nicht irre sollte der RegEx so laufen, wie du ihn beschrieben hast. Allerdings verstehe ich das mit dem p-Tag nicht so ganz, entweder steht der IMG-Tag ganz am Anfang oder nicht, aber er kann nicht ganz am Anfang stehen, wenn er innerhalb eines p-Tags steht, ergo: Es irritiert mich eben doch!?
__________________
Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll
MrNiceGuy ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.08.2006, 15:19 Nach oben    #3
Erfahrener Benutzer
 
Registriert seit: 30.10.2005
Beiträge: 287
Standard

Der reguläre Ausdruck mit dem <p> ist derzeit so wie das ganze geparst wird. Das soll sich aber ändern. An Stelle des <p> muss irgendwas verändert werden, das er statt <p> nach einer leeren Zeile vor dem IMG Tag parst (oder auch nicht falls der IMG ganz am Anfang des Datensatzes steht) und nach dem IMG Tag.

Der <p> Regexp ist nur zur Hilfe wie es derzeit mit <p> gemacht. Und da ich das korrigieren soll schmeiß ich den p html mist raus und will es eben mit leeren Zeilen versuchen.
ex³ ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.08.2006, 20:27 Nach oben    #4
Lutz
 
Benutzerbild von MrNiceGuy
 
Registriert seit: 14.08.2005
Ort: Nienburg / Weser
Beiträge: 687
Standard

Achso:

°(?:^|[\s]){img\|(left|right)\|(.*?)\}(?:$|[\s])°si

Das [\s] steht für Nicht sichtbare Zeichen, ^ für den Anfang einer Zeile und $ für das Ende einer Zeile. Hoffe hab das richtig im Gedächtnis, kann sein, dass du ^ und $ vertauschen musst.
__________________
Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll
MrNiceGuy ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 15.08.2006, 07:45 Nach oben    #5
Erfahrener Benutzer
 
Registriert seit: 18.03.2005
Beiträge: 597
Standard

Zitat:
[\s]
Weis nicht ob das an dieser Stelle so günstig ist.
Wobei, brauch man das eigendlich garnicht.

Schaue ich mir das Beispiel
Zitat:
{img|right|436}
an, sehe ich dafür keinen Grund.
CIX88 ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 15.08.2006, 18:36 Nach oben    #6
Lutz
 
Benutzerbild von MrNiceGuy
 
Registriert seit: 14.08.2005
Ort: Nienburg / Weser
Beiträge: 687
Standard

@Cix: Laut Beispiel braucht man es nicht, er sagte aber ausdrücklich mit nem Leerzeichen davor/dahinter oder am Anfang/Ende!?

Was würdest du denn statt [\s] nehmen? Vielleicht [ \r\n]? Denn es könnte ja auch an einem Zeilenanfang INNERHALB des Textes liegen, dann hat es kein Leerzeichen vor sich, ist aber nicht am Anfang des gesamten Textes, welches mit ^ abgefragt würde!?
__________________
Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll
MrNiceGuy ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 16.08.2006, 17:56 Nach oben    #7
Erfahrener Benutzer
 
Registriert seit: 18.03.2005
Beiträge: 597
Standard

Hmmm, also wenn ich nur nach den Inhalt von {img|right|436} suchen müsste, wäre es mir egal ob davor oder dahinter noch andere Zeichen (\s) kommen.
Daher würde ich nur '/{img\|(right|left)\|(\d+)}/is' benutzen.
Oder hab ich etwas falsch verstanden ?
CIX88 ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 16.08.2006, 21:53 Nach oben    #8
me pro ok?
 
Benutzerbild von Lars
 
Registriert seit: 07.09.2005
Ort: Pulheim bei Köln
Beiträge: 964
Standard

{ muss escapet werden. Außerdem brauchst du den s-Modifier nicht
__________________
Gedanken aus Draht stricken einen Zaun.
Lars ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 17.08.2006, 17:39 Nach oben    #9
Erfahrener Benutzer
 
Registriert seit: 18.03.2005
Beiträge: 597
Standard

Zitat:
{ muss escapet werden.
Jo das dachte ich bis vor kurzem auch, aber wenn kein Argument für min und/oder max angegeben wird, wird { oder } als Zeichenkette interpretiert.
Online-Beispiel:
http://www.cix88.de/projekte/regexp/...523212748.html

Aber natürlich kann es escapen, der Form halber
CIX88 ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 17.08.2006, 17:42 Nach oben    #10
me pro ok?
 
Benutzerbild von Lars
 
Registriert seit: 07.09.2005
Ort: Pulheim bei Köln
Beiträge: 964
Standard

Zitat:
wenn kein Argument für min und/oder max angegeben wird, wird { oder } als Zeichenkette interpretiert.
Danke, das hab ich nicht gewusst
__________________
Gedanken aus Draht stricken einen Zaun.
Lars ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

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 sind an
PingBacks sind an
RefBacks sind aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Template-Blöcke "fetchen", Probleme mit regulärem Ausdruck Ben PHP-Programmierung 13 14.02.2007 20:55
mal wieder ein regulärer ausdruck beny_mcde PHP-Programmierung 6 28.05.2006 21:26
suche regulären ausdruck beny_mcde PHP-Programmierung 13 24.01.2006 16:53


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:24 Uhr.


Powered by vBulletin® Version 3.7.4 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45