Hi,
$pattern = "/http.+? /";
an dieser Stelle würde ich $pattern = "/http[^ ]/"; empfehlen, da es kein Backtracking verursacht und somit schneller laufen wird (auch wenn sich das bei kleinen Texten kaum auswirken wird).
Das ^ an dieser Stelle bewirkt, das die Zeichenkette in den [] negiert wird, es steht also nicht für Zeile- oder Stringanfang.
Irgendwo später hatte ich noch die Frage mit dem $ gelesen.
^ und $ stehen für Zeilen/String-Anfänge/Enden nicht für Wortgrenzen. Dafür sind < > oder \b da (je nach dem, was von PHP unterstützt wird).
mfg. Maik