<?php regexen - kenner gefragt

  • Themenstarter Themenstarter ByeBye 8492
  • Beginndatum Beginndatum
B

ByeBye 8492

Moinsen,

wollte einen String nach PHP Anfangs und endtags durchsuchen .... .
Diese wollte ich dann später per Eval funktion ausgeben.... nun meine Frage, wie
ist die Reguläre Expression für <?php und ?> ? Habe schon fast eine halbe Stunde mit dem RegEx Trainer rumprobiert und es nicht rausgefunden ....

HELP
 
Dann sagt der RegEx code, das es nicht geht :(, bzw. No Match

EDIT:

Nachdem ich die Backslashes vorne und hinten weggenommen habe, geht es thx :D
 
Zuletzt bearbeitet von einem Moderator:
jetzt muss ich nur noch wieder meinen Template Parser umbasteln :D, dann müsste es klappen :)
 
Es gibt natürlich noch die Möglichkeit die Ausgabepuffer zu aktivieren, die PHP-Datei zu includen, den generierten HTML-Code über ob_get_contents() abzurufen und die Ausgabepufferung wieder zu deaktivieren.

snuu
 
ok, jetzt nochma ne Verständis Frage:

{(.*?)}

müsste eigentlich alles ausgeben was zwischen den Klammern steht oder?
weil irgendwie muss ich nach der Ausgabe:
preg_match_all("{(.*?)}", $to_parse, $new_pars);

immer hinschreiben
echo $new_pars[1][0];
und danach hat erst

$new_pars[1][3] wieder nen wert ....
 
Die geschweiften Klammern geben im Regulären Ausdruck Zeichenklassen an. Also müssten sie escaped werden. Wie gesagt, es gibt auch noch eine andere Möglichkeit:
PHP:
ob_end_flush();
ob_start();
include('datei.php');
$dateiinhalt = ob_get_contents();
ob_end_clean();

snuu
 
Moinsen,

so da bin ich nochmal

habe hier die Template Datei:
PHP:
{
smalltable();
echo "test";
bodytable();

}

Dies soll mit der Template funktion ausgegeben werden.

Dummerweise ist damit meine Template Funktion überlastet.

Eigentlich sollen nur die PHP Anweisungen ausgeführt werden und damit 1 Tabelle erstellt werden und Test ausgeben werden und dann noch eine 1 Tabelle ausgegeben werden .

Das macht er aber nicht, auch nciht mit eval() :(.
Dummerweise liest er danach auch nicht mehr die normalen Template Anweisungen aus ... bin am Verzweifeln...
 
So, habe es jetzt hingekriegt, allerding klappt es nur wenn alle PHP Anweisungen in einer Zeile stehen und selbst dann noch nicht richtig ...

was ist der Unterschied von:

preg_match_all("/{(.*?)}/", $to_parse, $parse_vars); ( keine Ergebnisse )
und

preg_match_all("{(.*?)}", $to_parse, $parse_vars); ( gibt Ergebnisse aus .... )


ich werd noch Wahnsinnig *g*

EDIT:

und was heisst:


Warning: ereg_replace(): REG_BADRPT: repetition-operator operand invalid in F:\htdocs\optima\includes\template.php on line 27

bei:
PHP:
	preg_match_all("<\?php(.*)\?>", $to_parse, $parse2); 
	for($z=0; $z < count($parse2[1]); $z++) 
		{
				$replace 			= 	eval($parse2[1][$z]);

				$to_parse_new			= 	ereg_replace($parse2[0][$z], $replace, $to_parse);
		}
 
Zuletzt bearbeitet von einem Moderator:
Zurück