Hallo Felix,
Wenn Du auf Backreferences eingehen möchtest, dann nimmst Du nicht $1, $2 usw. wie in Javascript, sondern \1, \2 usw.
Wenn Du Referenzen verwenden möchtest - was hier sehr sinnvoll ist - dann nimmst Du bereits seit Jahren bevorzugt $1, $2 usw. und nicht \1, \2, usw, siehe Handbuch.
Wenn Du schon Backreferences einsetzt, dann verwende sie doch auch dazu, um sicherzustellen, dass die umschließenden Anführungszeichen vorne wie hinten vom selben Typ (einfach oder eben doppelt, aber nicht beides zusammen) sind.
Diese Überlegung erscheint mir wenig schlüssig. Wenn die Anführungszeichen nicht paarweise sind, dann liegt ungültiges HTML (oder was auch immer) vor. Es ist keine Rede davon, dass damit ungültiger Kram gültig gemacht werden soll, sondern eher, dass funktionierender alter Code in funktionierenden neuen Code verarbeitet werden soll. Das heißt natürlich nicht, dass man hier nicht eine Referenz einsetzen kann.
[^>]*src=(["'])[^"']+thumb.php5?image_id=(\d+)(\1)[^>]*>~',
Könntest Du mir den * (fast am Ende) in diesem Teilmuster erläutern, erfasst Du damit ggf. nicht viel zu viel (Gier)? Ja, es klappt mit der Beispielzeichenkette (oder auch nicht wegen php5), aber nicht mit einer ganzen Datei.
Das Alt-Attribut lässt sich wunderbar mit einer Referenz einfangen, das ist meiner Meinung nach sinnvoller als eine Referenz für die Anführungszeichen (einigen wir uns auf insgesamt drei Referenzen ;-)).
Freundliche Grüße
Vinzenz