Hi,
Das Problem ist nur das der Benutzer name auch $ % ^ ° ß ? =)( und alles anderen Zeichen beinhalten kann.
auch "<", "/", "a" und ">"? Dann hast Du noch ganz andere Probleme.
preg_replace('/@([0-9a-z]*)/i', '<a href="http://domain.de/$1">@$1</a>', $text);
Grundregel der Software-Entwicklung: Wenn Du einen Wert in einen Kontext bringst, musst Du diesen Wert kontextspezifisch kodieren. Das gilt *immer* und *überall*. Bringst Du also einen Wert in einen URL-Kontext, musst Du ihn URL-kodieren. Bringst Du einen Wert - inklusive der kodierten URL - in einen HTML-Kontext, musst Du ihn HTML-kodieren. Derzeit ist Deine Ersetzung defekt, sobald Du mehr Zeichen als nur Ziffern und (ASCII-)Buchstaben zulässt[1].
Cheatah
[1] Eigentlich ist sie bereits jetzt defekt, nur entsprechen die Kodierungen von Ziffern und (ASCII-)Buchstaben sowohl in der URL als auch in HTML dem ursprünglichen Zeichen.
X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
X-Will-Answer-Email: No
X-Please-Search-Archive-First: Absolutely Yes