2014-06-23 248 views
0

我是新手,因此我有一個初學者問題。我做了一個帶有一些簡單數據的文本文件,我想將這些數據保存到一個xml文件中。將文本文件轉換爲xml

我試過用foreach循環,但我在這一點上掙扎。我知道問題是什麼,但我很愚蠢的解決問題。

這裏是我的文本文件:

Lea 
mueller 
[email protected] 
10.03.1984 
green 
Malte 
cool 
äö[email protected]ölf.com 
23.12.54 
red 
Peter 
Pam 
ö[email protected] 
23.23.2323 
pink 

我的PHP:

<?php 

$file = file("daten.txt"); 

$dom = new DOMDocument('1.0', 'utf-8'); 

$data = $dom->createElement('data'); 
$dom->appendChild($data); 

foreach($file as $value){ 

    $user = $dom->createElement("user"); 
    $data->appendChild($user); 

     $vorname = $dom->createElement("vorname", "$value"); 
     $user->appendChild($vorname); 

     $nachname = $dom->createElement("nachname", "$value"); 
     $user->appendChild($nachname); 

     $email = $dom->createElement("email", "$value"); 
     $user->appendChild($email); 

     $bday = $dom->createElement("bday", "$value"); 
     $user->appendChild($bday); 

     $color = $dom->createElement("color", "$value"); 
     $user->appendChild($color); 

     } 

$dom->save("new.xml"); 

print_r($file); 
?> 

我總是得到名字,姓氏,電子郵件,BDAY和顏色的四倍。我知道爲什麼,但我不知道,我如何以另一種方式做到這一點?

回答

1

在你到了那裏的代碼,在我看來,你使用$值多次希望它改變到下一行,我想會不會

嘗試用這種替代你的foreach循環:

for ($x = 0; $x<count($file); $x+=5){ 

    $user = $dom->createElement("user"); 
    $data->appendChild($user); 

     $vorname = $dom->createElement("vorname", trim($file[$x])); 
     $user->appendChild($vorname); 

     $nachname = $dom->createElement("nachname", trim($file[$x+1])); 
     $user->appendChild($nachname); 

     $email = $dom->createElement("email", trim($file[$x+2])); 
     $user->appendChild($email); 

     $bday = $dom->createElement("bday", trim($file[$x+3])); 
     $user->appendChild($bday); 

     $color = $dom->createElement("color", trim($file[$x+4])); 
     $user->appendChild($color); 

     } 

此外,請修復您的縮進。

讓我知道這是否工作。

編輯:修正循環條件中的分號用法。

+0

好吧,它正在工作。但我後面的字符串是這樣的: – c00L

+1

修剪該值以除去' ' – bansi

+0

好的,我修復了它,讓我知道它是否有效 – albertdiones