Sorry wahsaga,
ich dachte eigentlich das man str_replace einfach nicht in ein preg_replace schreiben darf.
Deswegen hatte ich eigentlich nur mit einer Bestätigung gerechnet, das es nicht geht.
Getestet habe ich es so:
$1 ist ja dann das Ergebnis von von der Suche also z.B.
Cream of Coconut
Die Leerzeichen soll dann durch str_replace mit einem _ ersetzt werden. Das funktioniert aber leider nicht.
Das Wort wird dann nicht einmal verlinkt. Lediglich [link] & [/link], das vor dem Wort steht, werden entfernt.
//Links
$muster = "|\[link\]([-_./a-zA-Z0-9äöüß !&%#?,'=:~]+)\[/link\]|i";
$linkstring = "<a href=\"zubehoer.php?name=\$1&kategorie=Säfte\">\$1</a>";
$row['beschreibung'] = preg_replace($muster, str_replace(" ", "_", $linkstring), $row['beschreibung']);
///Links
Danke für eure Hilfe