Kleine verbetering aangebracht: De end-of-line heb ik door PHP laten bepalen met PHP_EOL.
Waarom zou dat een verbetering zijn? PHP_EOL richt zich naar het serverplatform en de EOL is alleen relevant op het ontvangende systeem. Als je zit te browsen op een Windows-machine naar een server die op Linux draait, krijg je evengoed de verkeerde EOL te verwerken.
PHP_EOL heeft dan ook uitsluitend nut wanneer je data genereert die niet naar een browser gaat en die wordt verwerkt op de computer waar PHP op draait; je spreekt dan over lokale, niet-browsergebonden scripts.
Zou je PHP_EOL gebruiken op een webserver die op RISC OS draait, dan wordt er zelfs syntactisch foute HTML gegenereerd, want dat platform maakt gebruik van een LFCR-sequence, die volgens de HTML-standaard niet is toegestaan.
Wanneer je email genereert is PHP_EOL sowieso uit den boze, want de SMTP-standaard staat geen 'losse' CR of LF toe, alleen de combinatie CRLF. Ook in HTTP-headers moet je volgens de standaard CRLF gebruiken.
Oftewel: snel vergeten dus, dat hele PHP_EOL-frutseltje.
Edit:
Het is zelfs nóg erger: PHP_EOL genereert helemaal niet, zoals gesuggereerd in de documentatie, de correcte EOL voor het betreffende platform. Het genereert CRLF op Windows en LF op alle andere platforms. Heb je dus een platform dat gebruik maakt van CR of LFCR, of van CRLF op een niet-Win32 OS, dan 'hedde pech'.
PHP_EOL klinkt dus als een leuke poging om iets platform-onhafhankelijks in PHP in te bouwen, maar blijkt dus niet meer dan een goed voorbeeld van een anti-pattern te zijn.