Moin!
Wenn das hier dein Beispielfragment ist:
<dd>mal ein Beispiel</dd>
<dd>noch ein Beispiel</dd>
<dd>noch eins</dd>
<dd>das nächste</dd>
<dd>wieder eins</dd>
<dd>usw...</dd>
... dann kann das hier kein Ergebnis des Funktionsaufrufs sein:
array(2) { [0]=> array(7) { [0]=> string(660) "1234 " [1]=> string(19) "
21.12.2008"[2]=> string(14) "
2.554" [3]=> string(13) " 2.80" [4]=> string(15) "
75000" [5]=> string(18) "
Ein Wort" [6]=> string(15) "
mal ein Beispiel" } [1]=> array(7) { [0]=> string(651) "1234 " [1]=> string(10) "21.12.2008" [2]=> string(5) "2.554" ... Das geht noch ein Stück so weiter.
Abgesehen davon ist es auch noch mieserabel unübersichtlich formatiert. Tipp: Wenn du var_dump verwendest, dann entnehme den Dump entweder aus dem HTML-QUELLtext, oder schreibe den Dump in die HTML-Tags <pre> und </pre>. Dann sieht man die Einrückungen viel besser.
Du solltest also nochmal nachbessern bei deiner Beschreibung. Verwende ein konkretes Beispiel durchgehend in deinen Tests. Nimm gerne ein zusammengebautes, reduziertes, künstliches Stück HTML mit unrealen, aber realistischen Werten. Wenn du dein Problem soweit reduzierst, dass es mit einem minimalen Datensatz noch auftritt, kann man sich drauf konzentrieren, was da abläuft.
Insgesamt darf man von der Funktion preg_match_all aber sagen, dass sie halt ein mehrdimensionales Array mit den Fundstellen zurückgibt - und die einzelnen Informationen sich darin durchaus wiederholen, je nachdem, was im regulären Ausdruck gesucht und eingeklammert ist.
Ich vermute daher, dass du dich eher von den konkreten Daten verwirren lässt, die vom regulären Ausdruck untersucht werden. Umso wichtiger ist die Reduktion der Eingangsdaten auf ein extrem übersichtliches Maß. Also beispielsweise zwei Blöcke mit deutlich unterscheidbaren Daten.
- Sven Rautenberg