ThoRr
Mitglied
Hi,
ich stehe gerade vor einem Problem mit regulären Ausdrücken. Ich bin mir sicher, dass das, was ich vorhabe, realisierbar ist, nur weiß ich nicht, wie.
Und zwar habe ich folgendes Pseudotemplate:
Hier möchte ich mittels folgendem preg_match die IFs herausfiltern:
Allerdings erhalte ich hiermit einige falsche Ergebnisse im $matches-Array. Das, was meinem gewünschten, nämlich dem Inhalt jeweils einer IF-Anweisung am nächsten kommt, ist Folgendes:
Allerdings wird als Ende des ersten IFs das letzte ENDIF und nicht das nächste genommen. Daher muss ich diese Zeichenkette mit (.*) ausschließen. Und auch um die IF-Bedingung zu erhalten, kann ich nicht (.*) verwenden, sondern muss "-->" ausschließen. Aber wie kann man gleich eine ganze Zeichenkette ausschließen? Mit [^... geht es nicht.
LG
ich stehe gerade vor einem Problem mit regulären Ausdrücken. Ich bin mir sicher, dass das, was ich vorhabe, realisierbar ist, nur weiß ich nicht, wie.
Und zwar habe ich folgendes Pseudotemplate:
HTML:
<?xml version="1.0" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<!-- IF head -->
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<title>Untitled 1</title>
</head>
<!-- ENDIF -->
<!-- IF body -->
<body>
</body>
<!-- ENDIF -->
</html>
Hier möchte ich mittels folgendem preg_match die IFs herausfiltern:
PHP:
preg_match('/<!-- IF (.*) -->(.*)<!-- ENDIF -->/s', $subject, $matches);
Allerdings erhalte ich hiermit einige falsche Ergebnisse im $matches-Array. Das, was meinem gewünschten, nämlich dem Inhalt jeweils einer IF-Anweisung am nächsten kommt, ist Folgendes:
HTML:
<!-- IF head -->
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<title>Untitled 1</title>
</head>
<!-- ENDIF -->
<!-- IF body -->
<body>
</body>
<!-- ENDIF -->
Allerdings wird als Ende des ersten IFs das letzte ENDIF und nicht das nächste genommen. Daher muss ich diese Zeichenkette mit (.*) ausschließen. Und auch um die IF-Bedingung zu erhalten, kann ich nicht (.*) verwenden, sondern muss "-->" ausschließen. Aber wie kann man gleich eine ganze Zeichenkette ausschließen? Mit [^... geht es nicht.
LG