<?php
function ffgets($fp) {
$r = '';
while (true) {
$c = fgetc($fp);
$r.= $c;
if ($c == "\n") return $r;
}
return $r;
}
$fp = fopen('source.xml', 'r');
$nextfile_number = 1;
while (!feof($fp)) {
$line = ffgets($fp);
$nextfile_number_str = sprintf('%010d', $nextfile_number);
$path = "pages/".substr($nextfile_number_str, -1, 1)."/".substr($nextfile_number_str, -2, 1)."/".substr($nextfile_number_str, -3, 1)."/".substr($nextfile_number_str, -4, 1);
$oldumask = umask(0);
if (!is_dir($path)) {
mkdir($path, 0777, true);
}
umask($oldumask);
$nextfile_name = $path."/f".$nextfile_number.".xml";
if (strstr($line, "<page>")) {
$nfp = fopen($nextfile_name, 'w');
fwrite($nfp, $line);
} elseif (strstr($line, "</page>")){
fwrite($nfp, $line);
fclose($nfp);
$nextfile_number++;
echo $nextfile_number."\r\n";
} else {
fwrite($nfp, $line);
}
}
fclose($fp);
?>