$found_ids = preg_replace($search, "$1", $matches[0]);
$matches[0] ist ja bereits das Ergebnis von preg_match_all. Wenn du (chronologisch) von hinten nach vorne liest, verstehst du wie es funktioniert :-)
Ich sagte ja bereits: du kannst di preg_match_all() komplett sparen nur _nur_ mit preg_replace() arbeiten.