我不知道这是否是正确的方法,但现在我正在处理一个非常大的会员资料文本文件。但它确实不一致,但通常符合这种格式:
名称
学校
系
地址
电话
电子邮件
&& ^(表示单个记录的结尾)
通过它读取我想要处理的信息,然后将其格式化为XML。
所以现在我通过长文件读取foreach
,如下所示:
<?php
$textline = file("asrlist.txt");
foreach($textline as $showline){
echo $showline . "<br>";
}
?>
这就是我不知道如何继续的地方。任何人都可以给我一些关于如何将这些记录组织成XML的提示吗?
答案 0 :(得分:2)
这是使用simplexml
的简单解决方案:
$members = explode('&&^', $textline); // building array $members
$xml = new SimpleXMLElement("<?xml version="1.0" encoding="UTF-8"?><members></members>");
$fieldnames = array('name','school','department','address','phone','email');
// set $fieldsep to character(s) that seperate fields from each other in your textfile
$fieldsep = '\p\n'; // a wild guess...
foreach ($members as $member) {
$m = explode($fieldsep, $member); // build array $m; $m[0] would contain "name" etc.
$xmlmember = $xml->addChild('member');
foreach ($m as $key => $data)
$xmlmember->addChild($fieldnames[$key],$data);
} // foreach $members
$xml->asXML('mymembers.xml');
对于阅读和解析文本文件,与其他用户一样,CSV相关功能可能是一个不错的选择。
答案 1 :(得分:1)
要阅读大文件,您可以使用fgetcsv
答案 2 :(得分:1)
如果&&
作为该文件中记录的分隔符,则可以先将其替换为</member><member>
。使用<member>
添加整个文件,并在结尾添加</member>
。你将拥有类似XML的东西。
如何更换?
您可能会发现sed
等unix工具很有用。
sed 's/&&/\<\/member\>\<member\>/' <input.txt >output.xml
您也可以使用str_replace()
:
foreach($textline as $showline){
echo str_replace( '&&', '</member><member>', $showline ) . "<br>";
}