Сохраняйте пробелы в файлах после сохранения с помощью HTML Simple Dom Parser

Я использую ‘PHP Simple HTML DOM Parser’ для загрузки файлов (в данном случае zip), открываю индексный файл и разрешаю изменять ссылки. После обновления ссылок индексный файл перезаписывается и архивируется для загрузки.

Это все работает нормально, единственная проблема, с которой я сталкиваюсь, — это когда обновленный индексный файл сохранен, он теряет все свое пустое пространство внутри файла. Таким образом, если вы откроете файл в текстовом редакторе, он больше не будет иметь какой-либо структуры, поэтому его очень трудно нормально читать / редактировать.

Есть ли способ, которым я могу сохранить это белое пространство?

Файл «upload», который принимает загруженный файл, отображает его в iFrame с полями под ним, чтобы показать существующие ссылки, и полем для их обновления:

       <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>

И файл загрузки, который показывает iFrame с обновленным индексным файлом и загрузкой:

<?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>

Спасибо!

-1

Решение

Если вы анализируете HTML-код в дереве DOM, то исходное форматирование вообще не поддерживается в этой структуре. Тем не менее, вы можете запустить вывод через библиотеку, чтобы вставить правильные отступы и украсить вывод.

Если вы хотите сохранить вывод в том виде, в каком он есть, вы будете более успешны, используя регулярные выражения для поиска и переноса тегов.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]