Reguläre Ausdrücke | preg_match_all

Nils Hitze

Admin a.D.
Also liebe Coder.

Ich habe folgenden Quellcode, aber irgendwie findet
der (preg_match_all)-Befehl nicht das was ich gerne
finden möchte.

PHP:
<?php
$blockRegExp = "/<!--start([[:space: ]*)([|]?)([[:space: ]*)(([[:alpha: ])+[.]?([[:alpha: ])+)([[:space: ]*)([|]?)([[:space: ]*)-->/si";

$template = "parsTest.htm";
$f = @fopen($template,"rb");

$string = fread($f, filesize($template));

if(preg_match($blockRegExp, $string, $regs, PREG_SET_ORDER))
{
 echo($regs[0]);
}

fclose($f);
?>

Vielleicht könnt ihr mir ja helfen. Der RegEx
soll mir in einem Template folgenden Text finden
"<!--start |functions.template|-->" und dann
fortfahren bis "<!--end |function.template|-->"
Zwischen diesen beiden Kommentaren soll er
alle Zeilen auslesen und in ein Array speichern.

Wer weiß Rat.

Pfote
 
Moinsen
Code:
preg_match_all("=<!--start |functions.template|-->(.*)<!--end |function.template|-->=siU", $text, $a);
Du findest deine Matches im Array $a[1][$i]
 
Guter Gedanke .. ABER : UPDATED

Habe mich etwas undeutlich ausgedrückt, entschuldige bitte.

Ich habe das Problem, das mein Designer die Templates schreibt
und er ein HTML Dau ist .. also können Whitespaces auftauchen,
wo keine sein sollen und ganz davon ab möchte ich ja nicht
nach functions.template suchen, sondern nach functions.*.
Sprich einem beliebigen Namen.

Habe meinen Regex inzwischen etwas erweitert,
aber er gibt mir als Ergebniss noch immer nicht
genau was ich will ..

PHP:
°(\<{1,}?)(!--[[:space: ]*?[[:alpha: ]{4,}?[[:space: ]*?[|]{1,}?)([[:alpha: ]*?[.]?[[:alpha: ]*?)([[:space: ]*?[|]{1,}?[[:space: ]*?-->)°siU

[edited]
Jetzt funktioniert der Regex bis zu einem gewissen Grade,
allerdings sind die Ergebnisse sehr häßlich.


[0] =>
[1] => <
[2] => !-- start|
[3] => functions.muh
[4] => |-->

[/edited]
 
Zurück