2014-12-25 238 views
0

我編寫的東西從XML數據導出到一個txt:結果導出到一個txt文件

例如,多個<screenname>標籤之間的XML顯示的關鍵字。

然後,它會創建一個txt每行一個關鍵字是這樣的:

keyword1 
keyword2 
etc... 

這裏是我做的代碼:

<?php 
$xml=simplexml_load_file("thexml.xml") or die("Error: Cannot create object"); 
foreach($xml->children() as $screenname) { 
$nick = $screenname->screenname; 
file_put_contents('online.txt',$nick . "\n",FILE_APPEND); 
} 
?> 

問題是,我想每一次覆蓋online.txt我運行腳本。如果我從腳本中刪除FILE_APPEND,它只輸出第一個結果。如果我使用FILE_APPEND運行腳本,它會在每次運行腳本時爲每個創建的最後一個txt添加更多關鍵字。

+1

你需要提高你的邏輯,刪除該文件第一次那麼在你的樣子保持附加的關鍵字。 – MTahir

+0

您可以在循環中追加。如果您在循環內創建,該文件將只包含最後一個條目。這只是一個小錯字。 – hakre

回答

0

所以你想在每次運行時創建一個新文件。只要用w +打開它,這將啓動指針在第一個位置並覆蓋/刪除內容。

$file = fopen('online.txt', 'w+'); 

$xml=simplexml_load_file("thexml.xml") or die("Error: Cannot create object"); 
foreach($xml->children() as $screenname) 
    { 
    $nick = $screenname->screenname; 
    fwrite($file, $nick.PHP_EOL); 
    } 
fclose($file); 
+0

非常感謝它! –

+0

太棒了!別客氣! – baao

0

嘗試增加的,如果在循環中陳述打開FILE_APPEND /關閉:

<?php 
    $xml=simplexml_load_file("thexml.xml") or die("Error: Cannot create object"); 
    $new_file = True 
    foreach($xml->children() as $screenname) { 
    $nick = $screenname->screenname; 
    if ($new_file) { 
     file_put_contents('online.txt',$nick . "\n"); 
     $new_file = False; 
    } else { 
     file_put_contents('online.txt',$nick . "\n",FILE_APPEND); 
    } 
    } 
?>