【问题标题】:Convert text file into xml将文本文件转换为 xml
【发布时间】:2014-06-23 05:43:46
【问题描述】:

我是 php 新手,因此我有一个初学者问题。我做了一个包含一些简单数据的文本文件,我想将这些数据保存到一个 xml 文件中。

我已经尝试过使用 foreach 循环,但此时我很挣扎。我知道问题出在哪里,但我很愚蠢地修复了 ist。

这是我的文本文件:

Lea
mueller
lea_mueller@web.de
10.03.1984
green
Malte
cool
äödksf@kdölf.com
23.12.54
red
Peter
Pam
ödlfs@we.de
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);
?>

我总是得到四次姓名、姓氏、电子邮件、生日和颜色。我知道为什么,但我不知道,我该如何以另一种方式做到这一点?

【问题讨论】:

    标签: php xml text


    【解决方案1】:

    在你得到的那个代码中,在我看来你多次使用 $value 希望它改变到下一行,我认为它不会

    尝试用这个替换你的 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);
    
            }
    

    另外,请修正您的缩进。

    让我知道这是否有效。

    编辑:固定分号在循环条件中的使用。

    【讨论】:

    • 修剪值以删除&amp;#13;
    • @albertdiones 尝试使用for ($x = 0, $c=count($file); $x&lt;$c; $x+=5){ 只计算一次效率更高。
    • 非常感谢!!正在考虑用 for 循环来做,但不知道。 ty :D
    • @bansi 我知道它的效率较低,但专注于让它发挥作用;但我不知道你可以在 for() 中做到这一点,谢谢。
    • php.net/file 有一个参数/标志来删除最后的换行符。检查手册,它是为与这里的情况完全一样的情况而制作的。还有php.net/array_chunk
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-06
    • 2012-03-17
    • 1970-01-01
    相关资源
    最近更新 更多