Hallo Manu,
keine Ahnung, ob ich dich richtig verstanden habe:
$text = preg_replace('#<img src="([a-zA-Z0-9._-]+)" />#', '<img src="../$1" />', $text);
Also ohne Schleife, nur der eine Aufruf.
Passt. Ich Dödel hatte vergessen, dass man ja per Backreferences darauf zugreifen kann (was ich letztendlich mit meiner Schleife erreichen wollte)