Karşılık gelen iki satırı değitirmek yeterli olacaktır.
$text = preg_replace("~#([^\s#@]+)~",$anchor,$text);

$text = preg_replace("~@([^\s#@]+)~",$link,$text);