$found_ids = preg_replace($search, "$1", $matches[0]);
Da stimmt aber jetzt etwas nicht - das erste Argument ist der Ausdruck, das Zweite die Ersetzung und das dritte der String in dem zu suchen ist - das ist in deinem Fall $text und nicht $matches[0].
Das ist jetzt auch das, was ich eingangs von einer Variable gefaselt hatte :-)
Nur verstanden hab' ichs nicht :D