2011-06-28 12 views
0

XMLファイルを動的にトラフするPHPを作成しようとしています。私のftpの特定のディレクトリでDIRSとFILESを読んでいます。は再帰関数の中で変数に値を代入することができません

<?php 

$path = "."; 


$dir_handle = @opendir($path) or die("Unable to open $path"); 

function list_dir($dir_handle,$path) 
{ 



    while (false !== ($file = readdir($dir_handle))) { 

     $dir =$path.'/'.$file; 
    $link =$path.'/'; 


     if(is_dir($dir) && $file != '.' && $file !='..') 

     { 

     $handle = @opendir($dir) or die("unable to open file $file"); 

    $xmlString .= '<' . $file . '>'; 

    list_dir($handle, $dir); 

    $xmlString .= '</' . $file . '>'; 


     } 

    elseif($file != '.' && $file !='..' && $file !='ftpteste.php') 

     { 

    $xmlString .= '<IMAGE>'; 
    $xmlString .= '<PHOTO>' . $link . '' . $file . '</PHOTO>'; 
    $xmlString .= '</IMAGE>'; 

     } 
    } 


closedir($dir_handle); 

} 



$xmlString ='<XML>'; 

list_dir($dir_handle,$path); 

$xmlString .="</XML>"; 





$strXMLhead = '<?xml version="1.0" encoding="UTF-8" ?>'; 
$xmlString = $strXMLhead . "\n" . $xmlString; 



$xmlLoc = "../../interiores/xml/content.xml"; 

$fileXML = fopen($xmlLoc, "w+") or die("Can't open XML file"); 


if(!fwrite($fileXML, pack("CCC",0xef,0xbb,0xbf))) 
{ 
print "Error Saving File"; 
} 
else 
{ 
fwrite($fileXML, $xmlString); 
print "XML file saved"; 
} 

fclose($fileXML); 

?> 

問題は、私は、関数の内部で実行$ XmlStringには、出力を取得していないんだということである。

は、これまでのところは神、ここではコードです。文字列を結合する代わりにPrintを使用すると、それはうまくいきます。しかし、私はファイルに保存するために変数にする必要があります。

保存しても問題ありません。

それはのような何かを出力する必要があります

<XML> 

<$DIR NAME> 
<IMAGE> 
<PHOTO>$FILE_NAME</PHOTO> 
</IMAGE> 
</$DIR NAME> 

</XML> 

は、誰もがこれで私を助けることができますか?事前に

おかげで、 アルトゥル

答えて

0

建物のXMLをlist_dir()から返します。

function list_dir($dir_handle,$path) 
{ 
    ... 
    $xmlString .= list_dir($handle, $dir); 
    ... 
    return $xmlString; 
} 

$xmlString = '<XML>' . list_dir($dir_handle,$path) . '</XML>'; 
1

は、私はあなたがDomDocumentオブジェクトを見てみるべきだと思います。これは、XML文書のようなノードを持つ文書を簡単に作成する方法を提供します。あなたはその問題を避けることができます。

関連する問題