用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);
------解决方案--------------------
唠叨老大出手,你就可以解帖了,应该。