newslink wird schon ausgeführt und zwar mit exakt dem String "$1" BEVOR preg_replace() überhaupt etwas macht. Was du machen willst, geht mit dem Modifikator e (execute), etwa so:
PHP-Code:
preg_replace("#...#e", 'newslink("$1")', $text);
Über die Sinnhaftigkeit des ganzen solltest du aber wirklich einmal nachdenken.