Konichi wa,
ich bin dabei mir ein Script in PHP zu schreiben, das mir eine Website in Smarty-Form kopieren soll, unabhaengig von ihrer Groesse.
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<?php
//HTML-Dateien in einem Ordner in den Array $files_convert speichern.
function get_dir($par_dir, $ebene){
$files_convert = array();
if ($handle = opendir($par_dir)){
while (false != ($file = readdir($handle))) {
if($file != '.' && $file != '..') {
$path_parts = pathinfo($file);
if(is_dir($par_dir."/".$file)){
//echo $ebene."<b>".$file."</b><br>\n";
get_dir($par_dir."/".$file , $ebene." ");
}else {
if($path_parts["extension"]=="html"){
$path = $par_dir."/".$file;
//echo $ebene."<a href='".$par_dir."/".$file."'>".$par_dir."/".$file."</a><br>\n";
array_push($files_convert, $path);
}
}
}
}
closedir($handle);
}
//Fuer jedes Element in $files_convert
foreach ($files_convert as $value){
$path = pathinfo($value);
$tmp_dir = substr($path['basename'], 0, -5); //Dateinamen ohne Endung
$file_dir = substr($value, strpos($value, "/")+1, strpos($value, "/", 3)-1); //neuer Speicherort
$new_file_dir = "newtest/".$file_dir;
$dir = $value;
$site = $tmp_dir.'.php'; //Daeiname mit PHP-Endung
// Inhalt von der Seite einlesen
//$array = file($value);
// Den Array von $array in eine String $string umwandeln
//$string = implode("", $array);
$handle = fopen ($value, "rb");
$string = fread ($handle, filesize ($value));
fclose ($handle);
// Offset auf Start setzen
$offset=0;
// Ordner erstellen wenn noch ncih vorhanden
if (! is_dir($new_file_dir)){
mkdir($new_file_dir);
}
//Datei erstellen
fopen($new_file_dir.$site, "w+b");
//Smarty-Infos schreiben
if (is_writable($new_file_dir.$site)) {
fwrite($new_file_dir.$site, '<?php\nrequire_once("smarty/Smarty.class.php"); // Smarty includen\n$index=new Smarty; // Ein neues Smartyobjekt erzeugen');
}
//<title> auslesen und in Datei schreiben
while(strpos($string,'<title>', offset) !==false){
$anfangtitle=strpos($string,'<title>', $offset)+62;
$endtitle=strpos($string,'</title>', $offset)-8;
$title=substr($string, $anfangtitle, $endtitle-$anfangtitle);
if (is_writable($new_file_dir.$site)) {
fwrite($new_file_dir.$site, '$index->assign("$title", $tmp_dir);\n?>');
}
}
// Inhalt auslesen und schreiben
while(strpos($string,'<!--content-->', $offset)!==false){
$anfang=strpos($string,'<!--content-->', $offset)+16;
$ende=strpos($string,'<!--EndeAuslesen!-->',$offset)-70;
$inhalt=substr($string, $anfang, $ende-$anfang);
if (is_writable($new_file_dir.$site)) {
fwrite($new_file_dir.$site, '$index->assign("$content",$inhalt);');
}
}
//Datei schliessen
fclose($new_file_dir.$site);
// Offset auf Ende setzen
$offset=$ende;
//
}
}
get_dir(".", "");
?>
</body>
</html>
Mir wird jedoch folgende Fehlermeldung ausgegeben:
Warning: fwrite(): supplied argument is not a valid stream resource in G:\xampp\htdocs\kfbc\new\test\convert.php on line 63
Warning: fwrite(): supplied argument is not a valid stream resource in G:\xampp\htdocs\kfbc\new\test\convert.php on line 73
Bin inzwischen etwas ratlos da ich net versteh, wieso fwrite net funzt. Was muss ich aendern?
Gruesse aus Japan
Seren-san