日期:2014-05-17  浏览次数:20492 次

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);

------解决方案--------------------
唠叨老大出手,你就可以解帖了,应该。