Hallo Ingrid,
$site_edit_start = '<!-- START MAIN //-->';
$site_edit_end = '<!-- END MAIN //-->';
if(preg_match_all('~(?<='.str_replace("<!-- ", "", $site_edit_start).').*(?='.str_replace(" > //-->", "", $site_edit_end).')~sU',file_get_contents($site_name),$out))
{
Warum das str_replace? Vielleicht hat dich mein Suchmuster verwirrt, hatte einen Teil deiner ursprünglichen Begrenzer, der mir unnötig schien weggelassen.
if(preg_match_all('~(?<='.$site_edit_start.').*(?='.$site_edit_end.')~sU',file_get_contents($site_name),$out)) { ...
for($x=2;$x<sizeof($out[0]);$x++)
Gehe es doch einfacher mit foreach durch:
foreach($out[0] AS $v) {
var_dump($v);
}
Wäre das Ganze auch möglich, wenn $site_edit_start und $site_edit_end gleiche Werte haben?
Möglich schon, nur würde das Ergebnis ev. von dem abweichen, was du erwartest.
Beispielsweise 1<!-- INHALT //-->2<!-- INHALT //-->3<!-- INHALT //-->4<!-- INHALT //-->
Das Suchmuster würde 2,3 und 4 liefern. Wenn es nur paarweise matchen soll, dann besser so, wie zuvor schon erwähnt:
preg_match_all('~(?:<!-- INHALT //-->).*(?:<!-- INHALT //-->)~sU'
Gäbe dann 2 und 4 zurück.
Wenn man ?: nach der öffnenden Klammer schreibt, geht der zutreffende Inhalt nicht in das Ergebnis-Array. Benötigst <!-- INHALT //--> ja nur als Begrenzer.
Viel Erfolg und lG,
Jonny 5