vispār tev nenāktu par ļaunu regulās ekspresijas manuāļus palasīt, jo tā vien liekas, ka pāris lietas tu esi izzīdis no pirksta:
! - ko tas nozīmē?
šajā gadījumā pirms dubultpēdiņām nav jāliek beksleši, jo strings, kas ir singlepēdiņās netiek parsēts, otrkārts dubultpēdiņas nav regexp īpašais čarakters.
(.*?) - arī nav nekas loģisks, jo * nozīmē, ka . var būt 0 līdz bezgalībai garš, bet ? tajā pašā laikā nozīmē, ka tas ir viens čarakters. šajā gadījumā tev ieteiktu lietot (.+).
replacements - '\\1' - šeit labāk likt tikaivienu bakslašu, jo kā jau teicu, tad strings parastajās pēdiņās netiek parsēts.
galu galā es rakstītsu kautko līdzīgu: eregi_replace('target="([^"]*)"', '\1', $line)