ok, hier mal etwas genauer, was ich genau tun möchte:
ich möchte ein stück code, das aus einer DB ausgelesen wird und u.a. kommentare enthält (welche mit # gekennzeichnet sind), auf einer seite korrekt und nicht durch PHP interpretiert darstellen.
das funktioniert auch wunderbar mit htmlentities($code, ENT_QUOTES, 'UTF-8')
das problem ist nun, daß sich auf dieser seite ein link zu einem anderen PHP-script befindet, der code soll mit document.location="bla.php?param1=$param1¶m2=$ param2&..." als übergabeparameter entsprechend übergeben werden, um dort dann wiederum dargestellt zu werden.
an und für sich sollte das mit htmlentities wieder kein problem sein. nur wenn ich dann auf der zielseite den parameter ausgeben lasse, fehlen leerzeilen sowie alles, was nach dem ersten # ist (weils offenbar als kommentar interpretiert wird).
das mit den leerzeilen habe ich so hinbekommen (obwohl das eigentlich doch durch htmlentities erledigt werden sollte, ist aber komischerweise nicht so):
$param1 = htmlentities(str_replace("\n","<br>",$code), ENT_QUOTES, 'UTF-8');
bei den # stehe ich hingegen immer noch an.

natürlich könnte ichs auch einfach über str_replace("#","<HASH>",$str) machen und <HASH> dann vor der ausgabe wieder zurückwandeln, aber da muß es doch eine professionellere lösung geben.