Сплит HTML-файлы - PullRequest
       5

Сплит HTML-файлы

1 голос
/ 04 марта 2010

Как бы я разделил файл в формате HTML на несколько файлов HTML (с тегами HTML, HEAD и BODY) с помощью PHP? У меня будет тег-заполнитель (что-то вроде <div class='placeholder'></div>) для всех мест, которые я хочу вырезать.

Спасибо.

Ответы [ 2 ]

4 голосов
/ 04 марта 2010
$sourceHTML = file_get_contents('sourcefile');

$splitContents = explode("<div class='placeholder'></div>", $sourceHTML);

foreach ($splitContents as $html) {
    // save html to file
}

Редактировать: упс. Как правильно указывает user201140, я упустил тот факт, что каждый HTML-файл должен быть действительным документом. Поскольку точно не указано, что должен содержать тег head, я предполагаю, что тег head объединенного документа должен быть реплицирован на каждую копию. В этом случае:

$sourceHTML = file_get_contents('sourcefile');
preg_match("/(^.*<body.*?>)(.*)(<\/body.*$)/is", $sourceHTML, &$matches);
$top = $matches[1];
$contents = $matches[2];
$bottom = $matches[3];
$splitContents = explode("<div class='placeholder'></div>", $contents);
foreach ($splitContents as $chunk) {
    $html = $top.$chunk.$bottom;
    // save html to file
}
0 голосов
/ 07 мая 2014

Кажется, preg работает только для маленьких файлов ...

В любом случае ... Чтобы разделить HTML-файл этой формы:

(header...) <body><div class='container'> (intro...) 
<h3>Sect 1</h3> (section...) 
<h3>Sect 2</h3> (section...) 
(etc...) 
</div></body></html>

Мне удается так:

$splitContents = explode("<h3", $sourceHTML);
$i=0;
$last=count($splitContents)-1;
foreach ($splitContents as $chunk) {
    if($i==0) {
        $beginning=explode("<body", $chunk);
        $top=$beginning[0];
        $html = $chunk ;
    } else {
        $html = $top . "<body><div class='container'><h3" . $chunk ;
    }
    if($i !=$last) $html .= "</div></body></html>";
    // save html to file
    ++$i;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...