Ich setzt noch einen drauf :D.
Man muss auch auf den richtigen Zeichensatz achten.
Ich setzte auch noch einen drunter :-D
Der u modifier (PCRE_UTF8) ist nötig, wenn das Suchmuster UTF-8 enthält, in der Regel dann, wenn man UTF-8 Zeichenketten verarbeitet, was hier ja nicht der Fall ist.
Aber hat evtl. jemand eine Idee wie es kürzer/schneller/einfacher geht?
Ja, mittels REGEX und der Annahme, dass dein gesuchter Brocken mehrfach vorkommt, z.b. so:
if(preg_match_all('~(?<=START MAIN //-->).*(?=<!-- END MAIN)~sU',file_get_contents($site_name),$out)) {
var_dump($out);
} else {
echo "FAIL";
}
Array $out[0] sollte dann die gesuchten Stücke enthalten...
Du suchst alle irgendwelche Zeichen (Punkt) begrenzt durch ein START MAIN //--> und <!-- END MAIN.
Modifier
Der s Modifier bestimmt, dass der Quantifikator Punkt im Suchmuster auch auf Zeilenumbrüche zutrifft.
Der U Modfier kehrt die Gier von Quantifikatoren um. Quantifier werden ungreedy, genau so gut ginge in dem Fall ein Fragezeichen nach dem Quantifikator Stern.
Lookarounds
(?<= leitet einen positiven Lookbehind ein. Du möchtest alle Zeichen, vor denen ein START MAIN //--> vorkommt.
(?= leitet einen positiven Lookahead ein. Alle Zeichen, bis <!-- END MAIN
Lookarounds, damit das Ausgabe-Array nicht mit unnötigen Stücken gefüllt wird. Es gibt natürlich viele Möglichkeiten, so ein triviales Problem mittels REGEX zu lösen.
lG,
Jonny 5