Hallo Raketenwilli,
für die Einrückungen würde ich nicht ständig str_repeat verwenden, das macht den Code sehr schwer lesbar. Es ist für generierten Code auch nicht nötig, sauber eingerückt im HTML zu stehen. Der Inspektor des Browsers rückt eh ein, deswegen verzichte ich auf solchen Spökes.
Statt explode würde ich preg_split nehmen, weil das case-insensitive sein kann, und man kann die Spaces um den Doppelpunkt damit gleich auch noch loswerden. Und man sollte sich um den Fall kümmern, dass in einer Zeile der Doppelpunkt fehlt.
<?php
$text = file_get_contents( 'test.txt' );
foreach (preg_split('~<br\s*/?>~i', $text) as $row):
$parts = preg_split('/\s*:\s*/', $row, 2);
if (count($parts) < 2)
array_unshift($parts, '');
?>
<div>
<dt><?= $parts[0] ?></dt>
<dd><?= $parts[1] ?></dd>
</div>
<?php
endforeach;
Die Regex für den Zeilensplit ist mit ~ begrenzt, weil ich außer <br> auch <br/> oder <br /> erkennen können will. Und dann brauche ich das / in der Regex als normales Zeichen.
Statt mit echo gebe ich durch Beenden des PHP Modus aus. Einmal, um die Alternative zu zeigen und zum anderen, weil's mir persönlich besser gefällt…
Aber eine "Programmierbude" sollte sowas nicht als Vorlage brauchen, die sollten das können. Wie schon erwähnt - ich mutmaße irgendwas in ungenannten Rahmenbedingungen als Ursache für das "geht nicht". Natürlich könnte auch Mr. Hanlon sein Rasiermesser schwingen.
Rolf
sumpsi - posui - obstruxi