i schrieb Funktion für den Ersatz der Reihe:
function replace($row){
$replaced = preg_replace_callback("~(\<span class=\"itemopener\"\>)(\d{1,5})\s(top\</span\>.*\<span class=\"allopener\"\>).{3}(\</span\>)~iU", function($matches){
$str = $matches[1] . $matches[3] . $matches[2] . $matches[4];
return $str;
}, $row);
return $replaced;
}
$s = '<span class="itemopener">82 top</span> <span class="allopener">all</span>';
$replaced = replace($s);
echo "<pre>" . print_r($replaced, 1) . "</pre>";
exit();
Working demo of the function
Wenn Sie die Datei nach einer Zeile ablegen und einfach überprüfen möchten, ob die zu ersetzenden Bereiche vorhanden sind, können Sie sie an diese Funktion senden. Aber mit der Anzahl der von Ihnen angegebenen Dateien wird es einige Zeit dauern .
Für das Scannen aller Dateien im Pfad, den Sie meine Antwort dort verwenden können: scandir Nach kleinen Änderungen, die Sie nur HTM-Dateien zu lesen, ändern, und zurück zu Ihnen, welche Struktur Sie wünschen ..
Dann sind Sie nehmen alle gescannten Dateien htm und verarbeiten sie mit etwas wie folgt aus:
$allScannedFiles = array("......");
foreach($allScannedFiles as $key => $path){
$file = file_get_contents($path);
$lines = explode(PHP_EOL, $file);
$modifiedFile = "";
foreach($lines as $line){
if(strpos($line, "span") && strpos($line, "itemopener")){
$line = replace($line);
}
$modifiedFile .= $line . PHP_EOL;
}
file_put_contents($path, $modifiedFile);
}
ich schrieb dieses ein Ausschnitt aus dem Kopf, so dass einige Tests erforderlich .. Dann ist es laufen, gehen sie machen sich Kaffee und warten:) Wenn es Zeitüberschreitung gibt, können Sie php Zeitüberschreitung erhöhen. Wie das zu tun, wird gebeten, & hier beantwortet: how to increase timeout in php
alternativ können Sie laden Dateien als DOMDocument versuchen und Ersatz für diese Klasse documentation of DomDocument Aber wenn in den Dateien irgendwo nicht gültig html ist, es Probleme verursachen kann ..
Mal sehen, ob ich unde rstand: Sie wollen ein Skript lesen 8000 HTML-Dateien, und suchen Sie eine Zeile und ersetzen Sie sie durch andere in jeder Datei, richtig? –
1 Verzeichnis. 8000 HTM-Dateien. Jede Datei hat einen großen Textblock, wobei ungefähr 30 der Zielschnipsel darin geändert werden müssen. Also ca. 8000 * 30 Ersatz. – Adrian33
hier ist ein Beispiel Seite: http://hackerbra.in/unlisted/best_1360386661.htm – Adrian33