• Willkommen, Gast!
  • Dienstag, 14. Juli 2020, 08:17:06
Position: Home » Allgemeines » Allgemeines Board » [PHP][REGEX] für Template
Antworten
Thema: [PHP][REGEX] für Template [Seite 1 ]

Kein neuer Beitrag Mars , 28.02.2013, 14:28
Beitrag #1   

IP: n/a
Rang: * * * * * * *
Registrierung: 04.09.2007, 15:49
Homepage: http://www.mliebgott.de
Wohnort: Dresden
 

Forum-Gott mit 1025 Punkte, 697 Beiträge
Mahlzeit,

ich lerne gerade [ironie]Regex lieben[/ironie].
Und da ich es soooo liebe schaff ich natürlich auch alles :/

und zwar, folgende Situation
(BS-)Template:
1
2
3
4
5
6
7
{if blah == 7}
  ja
<!--optional-->
{else}
 nein
<!--/optional-->
{endif}


jetzt versuche ich dies mittels einem Regex zu matchen.
Derzeit kommt "nur" folgendes Ergebnis:
Code:
1
2
3
4
5
6
7
8
Array
(
    [0] => {if blah == 7}ja{else}nein{endif}
    [1] => test
    [2] => ja
    [3] => {else}nein
    [4] => nein
)
, wenn ich einen else-Zweig habe.

Im Ergebnis möchte ich aber
Code:
1
2
3
4
5
array(
   [0] => blah == 7
   [1] => ja
   [2] => nein
)


Derzeit habe ich diesen Regex:
PHP:
1
$regex = '#\{if\s(.+?)}(.+?)(\{else}(.+?))?\{endif}#s';


Hoffe konnte mein Problem verständlich beschreiben.

Es sollte am besten auch rekursiv funktionieren ...

mfg Marcel
Dieser Beitrag wurde insgesamt 1 mal editiert. Das letzte Mal 28.02.2013, 16:34 von Mars.

 
Kein neuer Beitrag Nils , 01.03.2013, 07:00
Beitrag #2   

IP: n/a
Rang: * * * * * * *
Registrierung: 01.07.2003, 18:55
Homepage: http://www.script-solution.de
Wohnort: Marburg
 

Forum-Gott mit 7812 Punkte, 7566 Beiträge
Hallo,

mit regulären Ausdrücken kannst du keine Rekursion abdecken. Wenn du das willst, musst du einen
regulären Ausdruck für die einzelnen Konstrukte bauen und Rekursion dann quasi per Hand unterstützen.

Aber mal davon abgesehen bekommst du folgendermaßen das gewünschte Ergebnis:
PHP:
1
$regex = '#\{if\s+(.+?)\}\s*(.+?)\s*(?:\{else\}\s*(.+?))?\s*\{endif\}#s';

Wobei Index 0 im Ergebnis allerdings immer dem gesamten Match entspricht. Aber 1, 2 und 3 sehen
dann wie oben aus.

mfg Nils

Edit: Habe das Thema ins richtige Forum verschoben.
Dieser Beitrag wurde insgesamt 2 mal editiert. Das letzte Mal 01.03.2013, 07:01 von Nils.

Abonnieren Druckansicht
Antworten

n/a n/a 1     (Anzeige: 1 – 2; insgesamt: 2) n/a n/a
User in diesem Thema: 0 Registrierte, 0 Versteckte, 1 Gast, 0 Bots
Keine
Legende: Administratoren, User, Moderatoren
Themenaktionen:
Beiträge verschieben

Toggle Ähnliche Themen zu „[PHP][REGEX] für Template“
  Antworten Aufrufe Themeneröffnung Letzter Beitrag
Keine neuen Beiträge, nicht wichtig Keine neuen Beiträge, „heißes Thema“
Keine neuen Beiträge, offen Keine neuen Beiträge, nicht verschoben
  Abfrage, ob User eingeloggt ist / Class 'FWS_ ... 5 118247 16.12.2011, 13:35
Von: PeterD
14.01.2015, 21:40
Von: Rafioso Zum letzten Beitrag
Keine neuen Beiträge, nicht wichtig Keine neuen Beiträge, „heißes Thema“
Keine neuen Beiträge, offen Keine neuen Beiträge, nicht verschoben
Thema How to change language from german to english ... 1 42273 07.09.2014, 17:44
Von: aphrodiy
08.09.2014, 21:47
Von: Rafioso Zum letzten Beitrag
Keine neuen Beiträge, nicht wichtig Keine neuen Beiträge, „heißes Thema“
Keine neuen Beiträge, offen Keine neuen Beiträge, nicht verschoben
  zeitliche Begrenzung einer Umfrage 0 49101 08.11.2013, 07:39
Von: Mars
08.11.2013, 07:39
Von: Mars Zum letzten Beitrag
Keine neuen Beiträge, nicht wichtig Keine neuen Beiträge, „heißes Thema“
Keine neuen Beiträge, offen Keine neuen Beiträge, verschoben
  Umfragen deutlicher hervorheben 5 48572 09.09.2013, 13:21
Von: Noir1992
11.09.2013, 08:18
Von: Noir1992 Zum letzten Beitrag
Keine neuen Beiträge, nicht wichtig Keine neuen Beiträge, „heißes Thema“
Keine neuen Beiträge, offen Keine neuen Beiträge, nicht verschoben
  Teilgenommene User bei Umfrage anzeigen 6 70727 16.08.2013, 12:55
Von: Tobi
20.08.2013, 20:11
Von: Tobi Zum letzten Beitrag
  • 0.120559 Sek., 10 DB-Zugriffe, 1.444 MiB
  • Powered by Boardsolution v1.46