Jonny 5: preg_match_all was tun wenn die Daten nicht regelkonform sind?

Beitrag lesen

Regex ist nicht geeignet zum parsen von html. Am besten verwendest du einen HTML parser.

Bei deinem Beispiel sind die <dl verschachtelt. Dafür bräuchtest du ein rekursives Suchmuster.

Etwas in der Art:

preg_match_all('~<dl>(?:[^<]+|<(?!/?dl\b)|(?R))*+</dl>~i',...

Bei (?R) wird das gesamte Suchmuster wieder eingefügt. Siehe Demo auf Regex101