Das liegt am $1, das gehört in den string $replacement und nicht davon ausgenommen.
Dass das nicht funktionieren kann, steht in den Basics der PHP-Variablen.
super jetzt funktionierts... Danke!
So siehts aus:
echo preg_replace("/(".$_GET['search'].")/i",'<span class="search highlight">$1</span>',$row['title']);