Tom: Regex aufs neue

Beitrag lesen

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 :-)