Hallo,
mich beschäftigt seit einigen Tagen folgendes Problem:
Ca. 500 html-Dateien zu je 20kB sollen einen neuen Namen bekommen. Da die Seiten untereinander verlinkt sind, sollen auch die internen Links umbenannt werden. Meine bisherige Lösung hier als Schnipsel:
$piold = Array mit den alten Datei/Linknamen
$pinew = Array mit den neuen Datei/Linknamen
$ext = Dateiendung z.B. ".htm"
Ich weiss nicht wie str_replace intern arbeitet. Wenn die 20kB Datei, die ca. 10 Links enthält 500mal durchsucht wird um das search_and_replace durchzuführen scheint mir das nicht optimal. Vor allem, da diese Prozedur für alle 500 Dateien durchgeführt werden muss.
Eine Idee wäre per regular Expression die Links in der Datei zu suchen und dann mit einem assoziativen Array direkt zu ersetzen:
Die alten Links lauten abXXXXX.htm oder ab-XXXXX.htm oder acXXXXX.htm oder ac-XXXXX.htm, wobei XXXX alles Zahlen sind (mindestens 3). Das array würde dann z.B. ac-12345.htm => neuername.htm usw. beinhalten.
Ist das machbar? Oder habt jemand einen anderen Vorschlag?
Gruß...Lothar
mich beschäftigt seit einigen Tagen folgendes Problem:
Ca. 500 html-Dateien zu je 20kB sollen einen neuen Namen bekommen. Da die Seiten untereinander verlinkt sind, sollen auch die internen Links umbenannt werden. Meine bisherige Lösung hier als Schnipsel:
$piold = Array mit den alten Datei/Linknamen
$pinew = Array mit den neuen Datei/Linknamen
$ext = Dateiendung z.B. ".htm"
PHP-Code:
function writePI($piold, $pinew, $ext) {
for ($i=0; $i<sizeof($piold); $i++) {
$isopen = @fopen($piold[$i].$ext, "r");
if($isopen) $isdata=@fread($isopen, filesize($piold[$i].$ext));
$isdata = str_replace($piold, $pinew, $isdata);
@fclose($isopen);
$isopen = @fopen($pinew[$i].$ext, "w");
if($isopen) @fwrite($isopen, $isdata);
@fclose($isopen);
}
}
Eine Idee wäre per regular Expression die Links in der Datei zu suchen und dann mit einem assoziativen Array direkt zu ersetzen:
Die alten Links lauten abXXXXX.htm oder ab-XXXXX.htm oder acXXXXX.htm oder ac-XXXXX.htm, wobei XXXX alles Zahlen sind (mindestens 3). Das array würde dann z.B. ac-12345.htm => neuername.htm usw. beinhalten.
Ist das machbar? Oder habt jemand einen anderen Vorschlag?
Gruß...Lothar
Kommentar