Sören: Problem mit fwrite();

Beitrag lesen

Konnichi wa,

anscheinend lag es an der while-Schleife, weswegen das Script nicht gefunzt hat. Nachdem ich die while-Schleife herausgenommen habe, funktioniert das Script jetzt im Prinzip.

Jetzt haben sich aber 3 neue Probleme aufgetan.

1. Die japanischen Zeichen werden mir nicht korrekt in die Datei geschrieben. Wenn ich jedoch mit echo ausgeben lasse, was er mir reinschreiben soll, wird es mir korrekt angezeigt.

2. Der japanische Teil der Website wird zum Teil gar nicht oder nur zum Teil in die Datei geschrieben.

3. Zwischen den einzelnen Teilen des Quelcodes, in der neuen Datei, haette ich gerne einen Zeilenumbruch. Wenn ich es mit '\r\n' oder nur '\n' versuche wird mir das einfach mit in den Quelcode geschrieben.

Der Code sieht folgendermassen jetzt aus:

<html>  
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
</head>  
<body>  
[code lang=php]<?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."&nbsp;&nbsp;&nbsp;");  
					}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, utf8_encode(filesize ($value)));  
			fclose ($handle);  
			  
			// Offset auf Start setzen  
			$offset=0;  
			  
			//$handle_dir = fopen($new_file_dir, "w+b");  
			$handle_filedir = fopen($new_file_dir.$site, "w+b");  
			  
			// Ordner erstellen wenn noch ncih vorhanden  
			if (! is_dir($new_file_dir)){  
				mkdir($new_file_dir, 0777, true);  
			}  
			  
			//<title> auslesen und in Datei schreiben  
			//while(strpos($string,'<title>', offset) !==false){  
				$anfangtitle=strpos($string,'<title>', $offset)+62;  
				$endtitle=strpos($string,'</title>', $offset)-8;  
				  
				$tmp_title=substr($string, $anfangtitle, $endtitle-$anfangtitle);  
				/*if (is_writable($handle_filedir)) {  
					fwrite($handle_filedir, '$index->assign("$title", $tmp_dir);\n?>');  
				}*/  
			//}  
			  
			$title = '$index->assign("$title", \''.$tmp_title.'\');';  
			  
			// Inhalt auslesen und schreiben  
			//while(strpos($string,'<!--content-->', $offset)!==false){  
  
				$anfang=strpos($string,'<!--content-->', $offset)+16;  
				$ende=strpos($string,'<!--EndeAuslesen!-->',$offset)-70;  
				  
				$tmp_inhalt=substr($string, $anfang, $ende-$anfang);  
				/*if (is_writable($handle_filedir)) {  
					fwrite($handle_filedir, '$index->assign("$content",$inhalt);');  
				}*/  
			//}  
			  
			$inhalt = '$index->assign("$content", \''.$tmp_inhalt.');\'';  
			  
			$beginn = '<?php  
			require_once("smarty/Smarty.class.php"); // Smarty includen  
			$index=new Smarty; // Ein neues Smartyobjekt erzeugen  
			';  
			  
			fwrite($handle_filedir, utf8_encode($beginn.$title.$inhalt));  
			  
			//Datei schliessen			  
			fclose($handle_filedir);  
			  
			// Offset auf Ende setzen  
			$offset=$ende;  
			//  
		}  
}  
	  
	get_dir(".", "");  
 ?>

</body>
 </html>[/code]

Gruesse aus Japan
Soeren-san