Hallo theresa,
ich möchte alle bildpfade innerhalb eines dokumentes via search/replace ersetzen, hab aber keine idee wie ich das machen soll. ich muss nämlich nicht nur den pfad ändern, sondern auch den dateinamen eines bildes.
ich hab z.b. im original:
<img src = "../bilder/21312312_gans.jpg"> und
und daraus soll werden:
<img src = "http://www.domain.de/bilder/gans.jpg"> und <img src = "http://www.domain.de/bilder/henne.jpg">mit ereg_replace kann ich den basispfad tauschen, aber wie soll ich die dateinamen ändern?
Ich würde für sowas besser preg_replace() benutzen. Es funktioniert so ähnlich wie ereg_replace() benutzt aber eine etwas andere Art von Regulären Ausdrücken für die Suchmuster. Nebenbei ist es schneller.
// beispiel
$alt = '<img src = "../bilder/21312312_gans.jpg"> <img src = "../bilder/9821374_henne.jpg">';
$rx = '/(\<img[^>]+src\s*=\s*")(\.\.)(\/[^"]+\/)(\d+\_)([^"]+"[^>]*\>)/';
$rpl = '$1http://www.domain.de$3$5';
$neu = preg_replace($rx, $rpl, $alt);
printf('%s', htmlspecialchars($neu));
'/)(\d+\_)([^"]+"'
Das Script geht davon aus, dass der Dateiname der Teil der Zeichenkette ist, der innerhalb des Pfades nach dem letzten Slash steht.
'(<img[^>]+src\s*=\s*")'...'([^"]+"[^>]*>)'
Der Pfad wiederum ist der Teil der Zeichenkette, der innerhalb des <img>-Tags im src-Attribut zwischen den doppelten Hochkommas steht.
'(\d+\_)'
Der Dateiname wird so geändert, dass die führenden Zahlen und der darauffolgende Unterstrich entfernt werden.
MffG
EisFuX