suit: preg_replace - Zeilenumbrüche mit "\n" erstzen

Beitrag lesen

Daher denke ich, dass das auch wirklich so ausgegeben wird :(

Das bezweifle ich auch nicht.

Du versäumst aber, deine eigentliche Datenquelle zu analysierne. Du nimmst pauschal an, dass der Zeilenumbruch ausschließlich durch das Linefeed-Zeichen erzeugt wird - offensichtlich stimmt das nicht. Es gibt eine ganze Reihe nicht sichtbarer (bzw. nicht druckbarer) Zeichen. U+200B (ZERO WIDTH SPACE) ist z.B. so ein Fall.

Siehe hier:
foo​​​​​bar

Augenscheinlich sieht das nach folgendem aus:
U+0066 = f
U+006F = o
U+006F = o
U+0062 = b
U+0061 = a
U+0072 = r

Tatsächlich aber wird dir ein Hex-Editor folgendes zeigen:
0066 006F 006F 200B 200B 200B 200B 200B 0062 0061 0072

Mit jeglicher Ersetzungsfunktion wirst du dich schwarz ärgern, weil du "foo​​​​​bar" nicht finden wirst wenn du nach "foobar" suchst.