php 读取文本文件
用fopen打开后,一行行读,#和@开头的过滤掉,当有<node>或<leaf>(标签开始时开始读)读里面的三个属性,再遇下一个标签<leaf>或</leaf>或</node>后,就把前三个作为数组拿出来,也就是把每个标签中间的读完是三个元素的数组拿出来处理,读完为止.
这样的方法怎么写呀?
#vision1.1
@fileid=0010
<node>
name=xx
id=0
orth=zzz
<leaf>
name=xx
id=801
orth=/btf/sub.txt
</leaf>
<leaf>
name=xx
id=101
orth=/bbs/test.txt
</leaf>
</node>
------解决方案--------------------前两行的#和@过滤好处理,从<node>开始:
当找到<node>时,用变量一次性记录下 $firstNode="<node>";处理下使$firstNode="</node>";
然后一行行处理判断当前行如果=$firstNode,
则读到此为止...
此是<node></node>间的内容全部取出.
至于<>....</>正则处理..
------解决方案--------------------PHP code
$fn = 'data2.txt';
$fp = fopen($fn, 'r');
$s = '';
while($buf = fgets($fp)) {
if(in_array($buf{0}, array('#', '@'))) continue;
if($buf{0} == '<') {
if($s) {
parse_str($s, $t);
$r[] = $t;
$s = '';
}
continue;
}
$s .= ($s ? '&' : '') . $buf;
}
fclose($fp);
print_r($r);
------解决方案--------------------
唠叨老大出手,你就可以解帖了,应该。