Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
(Web-) Design und webbasierte Sprachen Tipps & Tricks, Designabgleich, HTML & Javascript, Flash, ASP, PHP, Perl/CGI...

Probleme mit PHP-Kopierscript

Diskussion: Probleme mit PHP-Kopierscript im Forum (Web-) Design und webbasierte Sprachen, in der Kategorie Web, Network & Multimedia Palace; Anzeige Konnichi wa, ich bin dabei mir ein Script zu Schreiben das mir eine Websie unabhaengig ihres Umfangs in Smarty-Form ...

Antwort
Alt 28.05.09, 07:32   #1 (permalink)
 
Registriert seit: 20.03.09
BlackPanter Leistung: Facit NTK
BlackPanter eine Nachricht ber ICQ schicken
Likes: 0
Standard Probleme mit PHP-Kopierscript

Anzeige

Konnichi wa,

ich bin dabei mir ein Script zu Schreiben das mir eine Websie unabhaengig ihres Umfangs in Smarty-Form kopieren soll.

Jetzt bin ich auf 3 fuer mich nicht loesbare Probleme gestossen:

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:

PHP-Code:
<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."&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($valuestrpos($value"/")+1strpos($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 ($handleutf8_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_dir0777true);
                        }
                        
                        
//<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_filedirutf8_encode($beginn.$title.$inhalt));
                        
                        
//Datei schliessen                        
                        
fclose($handle_filedir);
                        
                        
// Offset auf Ende setzen
                        
$offset=$ende;
                        
//
                
}
}
        
        
get_dir(".""");
 
?>
 </body>
 </html>
Gruesse aus Japan
Soeren
BlackPanter ist offline   Mit Zitat antworten
Alt 28.05.09, 18:28   #2 (permalink)
Senior Member
 
Benutzerbild von Chakky
 
Registriert seit: 28.10.03
Chakky Leistung: 8086
Chakky eine Nachricht ber ICQ schicken
Likes: 110
Standard

evtl utf encode? evtl anderen zeoichensatz nutzn fr die japanischen zeichen?
__________________
cu
Chakky

we are dreaming in digital
we are living in realtime
we are thinking in binary
we are talking in IP
welcome to our world
Chakky ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 29.05.09, 13:06   #3 (permalink)
Themenstarter
 
Registriert seit: 20.03.09
BlackPanter Leistung: Facit NTK
BlackPanter eine Nachricht ber ICQ schicken
Likes: 0
Standard

Die Website an sich ist UTF-8 codiert.

Wnd mit der Function utf8_encode() soll mir der Inhalt korrekt in die Datei gespeichert werden.

Wie man unten sieht wird mir die Datei noch nichtmal komplet abgespeichert sondern es wird aus einem mir unbekannten Grund mitem im Script abgebrochen und die naechste Datei wird geschrieben.

Aussehen tut die Datei z.B. so:
Code:
<?php
			require_once("smarty/Smarty.class.php"); // Smarty includen
			$index=new Smarty; // Ein neues Smartyobjekt erzeugen
			$index->assign("$title", '????????????????????¤??????????? ???????????? - ????');$index->assign("$content", '    			<table width="660px;" border="0" cellspacing="0" cellpadding="0">
                    <tr>
                        <td align="left" valign="top">
                            <div>???????????????????????????(?????°??????¸???????????????Š????????????????????????????¨??????§???????<br />??????????????????????????????????? ?????????????????´???¤,?????? ??????????Š??????????</div>
                            <div class="jap-house_housename">belief - ?????°</div>
                            <div>
                            	<ul>
                                    <li>???¨???????š???????????????</li>
                                    <li>??? ???????????(??????????????????????¨??????????????¨? ?)</li>
                                    <li>??´??????????????´???¤ (????????????????)</li>
                                    <li>??´?????????</li>
                                </ul>
                            </div>
                        </td>
                        <td align="right">
                            <div class="jap-house_topimg"><a href="../img/pics/japhouse_small.jpg" rel="lightbox[japhouse]" title="Japanese Style House Believe"><img src="../img/pics/japhouse_small.jpg" width="300" height=);'
BlackPanter ist offline   Mit Zitat antworten
Alt 29.05.09, 14:44   #4 (permalink)
 
Registriert seit: 03.03.08
Knoxx Leistung: Facit NTK
Likes: 0
Standard

Du knntest mal versuchen den Wert fr max_execution_time in der php.ini hochsetzen oder im Script "set_time_limit()" verwenden.

Gre Knoxx
Knoxx ist offline   Mit Zitat antworten
Alt 29.05.09, 16:34   #5 (permalink)
Themenstarter
 
Registriert seit: 20.03.09
BlackPanter Leistung: Facit NTK
BlackPanter eine Nachricht ber ICQ schicken
Likes: 0
Standard

Bringt keine veraenderung.
BlackPanter ist offline   Mit Zitat antworten
Alt 31.05.09, 23:29   #6 (permalink)
 
Registriert seit: 22.10.07
AmShaegar Leistung: Facit NTK
Likes: 0
Standard

Zu dem Problem mit den zeilenumbrchen:
PHP-Code:
fwrite($handle_filedir'$index->assign("$title", $tmp_dir);\n?>'); 
Kann sein, dass doppelte Anfhrungsstriche verwendet werden sollten("), weil \n in einfachen(') ausgeschrieben wird.

Vergleiche:
PHP-Code:
echo 'Hallo\nWelt!';
//Result: Hallo\nWelt!
echo "Hallo\nWelt!";
//Result: Hallo
//Welt! 
AmShaegar ist offline   Mit Zitat antworten
Alt 04.06.09, 09:00   #7 (permalink)
Themenstarter
 
Registriert seit: 20.03.09
BlackPanter Leistung: Facit NTK
BlackPanter eine Nachricht ber ICQ schicken
Likes: 0
Standard

Ja, es lag an den Anfuerhungszeichen das es PHP den Zeilenumbruch nciht erkannt hat.

Wie ich das ganze jedoch in utf-8 abspeichern kann habe ich immer noch nicht herrausgefunden.
BlackPanter ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Web, Network & Multimedia Palace » (Web-) Design und webbasierte Sprachen » Probleme mit PHP-Kopierscript
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beitrge zu antworten.
Es ist Ihnen nicht erlaubt, Anhnge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beitrge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


hnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Probleme ber Probleme Jorgibear Applikationen 4 14.07.05 18:51
SSH Key Probleme sfil Linux/UNIX 7 20.07.04 20:26
Probleme Sandmann10 Windows 1 15.02.04 13:38
Red Hat Probleme Ghost Linux/UNIX 8 15.09.03 10:22
VPN Probleme.... typhoon Network LAN, WAN, Firewalls 2 30.03.02 02:01


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61