Hello,
Ich kriegs nicht hin
Aber ich:
<?php ### find_hits.php ###
$data = "
##1 id1
##2Erster Eintrag
##3
Das ist mein erster Eintrag und nur ein Test.
##1 id2
##22. Eintrag
##3
Das ist mein 2. Eintrag und nur ein Test.
##1 id3
##23. Eintrag
##3
Das ist mein 3. Eintrag und nur ein Test.
##1 id4
##24. Eintrag
##3
Das ist mein 4. Eintrag und nur ein Test.
##1 id5
##25. Eintrag
##3
Das ist mein 5. Eintrag und nur ein Test.
";
$_treffer = array();
preg_match_all('/(##3)([^#]*\s*)(##)/m', $data, $_treffer);
echo "<pre>\n";
echo htmlspecialchars(print_r($_treffer));
echo "</pre>\n";
?>
/ Pattern Start
(##3) Friss ##3 aber packs nicht zum gesuchten Text, sondern extra
([^#]*\s*) alle Zeichen, nur das Stop-Zeichen der gesuchten Kette nicht
auch Whitespaces
(##) Ende des gesuchten Textes, nicht zum Text dazu packen
/ Pattern Ende
m auch über Zeilenumbrüche hinweg
Wie Du siehst, fehlt der 5. Eintrag, weil er nicht mit den geforderten zwei Doppelkreuzen endet. Wenn Du den auch noch haben willst, müsste man das noch mit dem $-Zeichen optional einbauen
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau
Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)