Ich verwende 'PHP Simple HTML DOM Parser' zum Hochladen von Dateien (in diesem Fall eine Zip), öffnen Sie die Indexdatei, und ermöglichen Sie Links zu ändern. Sobald die Links aktualisiert sind, wird die Indexdatei überschrieben und für den Download gezippt.Behalten Sie Leerzeichen in Dateien nach dem Speichern mit HTML Simple Dom Parser
Das alles funktioniert gut, das einzige Problem, das ich habe, ist, sobald die aktualisierte Indexdatei gespeichert ist, verliert es seinen ganzen Leerraum innerhalb der Datei. Wenn Sie also die Datei in einem Texteditor öffnen, ist sie nicht mehr mit einer Struktur versehen, so dass es sehr schwierig ist, normal zu lesen/zu bearbeiten.
Gibt es eine Möglichkeit, diesen Leerraum zu erhalten?
Die „upload“ Datei, die mit Feldern darunter die hochgeladene Datei, zeigen Sie es in einem iFrame nimmt bestehende Verbindungen zu zeigen, und ein Feld, um sie zu aktualisieren:
<div class="output">
<form action="download.php" id="urlform" method="POST">
<?php
//Traverse DOM of iFrame content, output existing href tags
$html = file_get_html($_SESSION['index']);
$i = 1;
$inc = 1;
foreach($html -> find('a') as $element) : ?>
<!-- Ignore untagged links -->
<?php if (strpos($element -> href, "utm") !== false) {
$element -> name = $inc; ?>
<?php if ($i % 2 === 0) {
echo '<div class="alternate">';
} else {
echo '<div class="standard">';
} ?>
<!-- Add name attr to anchor tags for reference -->
<div class="assign">
<p><?php echo $element -> name; ?></p>
</div>
<div class="content">
<h3>Existing tag:</h3>
<p><?php echo $element -> href; ?></p>
<h3>New tag:</h3>
<input type="textarea" name="urltag_<?php echo $inc; ?>">
</div>
</div>
<?php $i++; $inc++; } ?>
<?php endforeach; ?>
<input type="submit" value="Update eShot">
</form>
</div>
Und die Download-Datei, die zeigt, ein iFrame mit der aktualisierten Indexdatei und einem Download:
<?php
//Open index.html of zip and replace href with new tags
$newhtml = file_get_html($_SESSION['index']);
$inc = 1;
foreach($newhtml -> find('a') as $url) {
if (strpos($url -> href, "utm") !== false) {
$url -> href = $_POST["urltag_" . $inc];
$inc++;
};
}
//Store changes in new index file
file_put_contents($_SESSION['index'], $newhtml);
$folder = $_SESSION['new_directory'];
if (isset($_SESSION['portal'])){
$zipname = $_SESSION['name'] . " " . $_SESSION['portal'] . " " . date('dmy') . ".zip";
} else {
$zipname = $_SESSION['name'] . " " . date('dmy') . ".zip";
}
class FlxZipArchive extends ZipArchive {
public function addDir($folder, $zipname) {
$this->addEmptyDir($zipname);
$this->addDirDo($folder, $zipname);
}
private function addDirDo($folder, $zipname) {
$zipname .= '/';
$folder .= '/';
$dir = opendir ($folder);
while ($file = readdir($dir))
{
if ($file == '.' || $file == '..') continue;
$do = (filetype($folder . $file) == 'dir') ? 'addDir' : 'addFile';
$this->$do($folder . $file, $zipname . $file);
}
}
}
$za = new FlxZipArchive;
$res = $za->open($folder . "/" . $zipname, ZipArchive::CREATE);
if($res === TRUE)
{
$za->addDir($folder, basename($folder));
$za->close();
}
else { echo 'Could not create a zip archive';}
?>
<div class="thankyou">
<p>Thank you. Please check your new links in the eShot below:</p>
</div>
<iframe class="eshotwrapper" src="<?php echo $_SESSION['index'] ?>"></iframe>
<div class="downloadlink">
<p>Once you have confirmed your tagged links are correct, please click the link below to download your new eShot: <br>
(Right-click and select "Save as..." to choose a save location)</p>
<a href="<?php echo $_SESSION['new_directory'] . "/" . $zipname ?>"><button type="button">Download</button></a>
</div>
</div>
Vielen Dank!