Moin!
Vor Allem aber, und das ist mein Stand im Moment, stelle ich mir die Frage, warum das Skript einmal aus der einen und einmal aus der anderen Richtung vergleicht,
Ganz einfach: Es kann Text hinzugefügt worden sein (macht Vergleich nach unten nötig) und es kann gelöscht worden sein (macht Vergleich nach oben nötig).
Ich würde übrigens alle leeren Array-Elemente löschen (oder besser noch alle auf einander folgenden Zeilenbrüche durch jeweils einen ersetzen):
Also:
$html = preg_replace("/\n+/", "\n",(trim(preg_replace( "/\n+/", "\n", str_replace(array ("<", ">"), array ("\n<", ">\n"), str_replace(array("\r", "\n"),"\n", $html)))));
Leerzeilen dürften für die Differenzbetrachtung ziemlich uninteressant sein.
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix