это я парсер под это дело писал (давненько правда уже)
[CODE][COLOR=#000000][COLOR=#007700]<[/COLOR][COLOR=#0000BB]html[/COLOR][COLOR=#007700]>
<[/COLOR][COLOR=#0000BB]head[/COLOR][COLOR=#007700]>
<[/COLOR][COLOR=#0000BB]title[/COLOR][COLOR=#007700]>[/COLOR][COLOR=#0000BB]Парсинг каталогов FreeBSD от Scipio[/COLOR][COLOR=#007700]</[/COLOR][COLOR=#0000BB]title[/COLOR][COLOR=#007700]>
</[/COLOR][COLOR=#0000BB]head[/COLOR][COLOR=#007700]>
<[/COLOR][COLOR=#0000BB]body[/COLOR][COLOR=#007700]>
<?[/COLOR][COLOR=#0000BB]php
error_reporting[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]0[/COLOR][COLOR=#007700]);
[/COLOR][COLOR=#0000BB]set_time_limit[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]0[/COLOR][COLOR=#007700]);
if (isset([/COLOR][COLOR=#0000BB]$_POST[/COLOR][COLOR=#007700][[/COLOR][COLOR=#DD0000]'pole'[/COLOR][COLOR=#007700]])){[/COLOR][COLOR=#0000BB]$pole[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#0000BB]$_POST[/COLOR][COLOR=#007700][[/COLOR][COLOR=#DD0000]'pole'[/COLOR][COLOR=#007700]]; [/COLOR][COLOR=#0000BB]$fl[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#0000BB]file_get_contents[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]$pole[/COLOR][COLOR=#007700]);} else [/COLOR][COLOR=#0000BB]$pole[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#DD0000]''[/COLOR][COLOR=#007700];
[/COLOR][COLOR=#0000BB]?>
[/COLOR]/>
[COLOR=#0000BB]<?php
[/COLOR][COLOR=#007700]if (!empty([/COLOR][COLOR=#0000BB]$fl[/COLOR][COLOR=#007700]))
{
[/COLOR][COLOR=#0000BB]$s[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#0000BB]bin2hex [/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]$fl[/COLOR][COLOR=#007700]);
[/COLOR][COLOR=#0000BB]$ln[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#0000BB]strlen[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]$s[/COLOR][COLOR=#007700])-[/COLOR][COLOR=#0000BB]5[/COLOR][COLOR=#007700];
[/COLOR][COLOR=#0000BB]$nam[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#0000BB]FALSE[/COLOR][COLOR=#007700];
for ([/COLOR][COLOR=#0000BB]$i[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#0000BB]0[/COLOR][COLOR=#007700];[/COLOR][COLOR=#0000BB]$i[/COLOR][COLOR=#007700]<[/COLOR][COLOR=#0000BB]$ln[/COLOR][COLOR=#007700];[/COLOR][COLOR=#0000BB]$i[/COLOR][COLOR=#007700]+=[/COLOR][COLOR=#0000BB]2[/COLOR][COLOR=#007700])
{ [/COLOR][COLOR=#0000BB]$curhex[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#0000BB]substr[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]$s[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000BB]$i[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000BB]3[/COLOR][COLOR=#007700]);
[/COLOR][COLOR=#0000BB]$nexthex[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#0000BB]substr[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]$s[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000BB]$i[/COLOR][COLOR=#007700]+[/COLOR][COLOR=#0000BB]4[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000BB]1[/COLOR][COLOR=#007700]);
if (([/COLOR][COLOR=#0000BB]$curhex[/COLOR][COLOR=#007700]==[/COLOR][COLOR=#DD0000]'040'[/COLOR][COLOR=#007700]) and ([/COLOR][COLOR=#0000BB]$nexthex[/COLOR][COLOR=#007700]>[/COLOR][COLOR=#DD0000]'1'[/COLOR][COLOR=#007700]) and ([/COLOR][COLOR=#0000BB]$nexthex[/COLOR][COLOR=#007700]<[/COLOR][COLOR=#DD0000]'8'[/COLOR][COLOR=#007700]))
{
[/COLOR][COLOR=#0000BB]$pob[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#DD0000]"
"[/COLOR][COLOR=#007700].[/COLOR][COLOR=#DD0000]'
[DIR] '[/COLOR][COLOR=#007700];
[/COLOR][COLOR=#0000BB]$nam[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#0000BB]TRUE[/COLOR][COLOR=#007700];
[/COLOR][COLOR=#0000BB]$i[/COLOR][COLOR=#007700]+=[/COLOR][COLOR=#0000BB]4[/COLOR][COLOR=#007700];
}
if (([/COLOR][COLOR=#0000BB]$curhex[/COLOR][COLOR=#007700]==[/COLOR][COLOR=#DD0000]'080'[/COLOR][COLOR=#007700]) and ([/COLOR][COLOR=#0000BB]$nexthex[/COLOR][COLOR=#007700]>[/COLOR][COLOR=#DD0000]'1'[/COLOR][COLOR=#007700]) and ([/COLOR][COLOR=#0000BB]$nexthex[/COLOR][COLOR=#007700]<[/COLOR][COLOR=#DD0000]'8'[/COLOR][COLOR=#007700]))
{
[/COLOR][COLOR=#0000BB]$pob[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#DD0000]"
"[/COLOR][COLOR=#007700].[/COLOR][COLOR=#DD0000]'[FILE] '[/COLOR][COLOR=#007700];
[/COLOR][COLOR=#0000BB]$nam[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#0000BB]TRUE[/COLOR][COLOR=#007700];
[/COLOR][COLOR=#0000BB]$i[/COLOR][COLOR=#007700]+=[/COLOR][COLOR=#0000BB]4[/COLOR][COLOR=#007700];
}
if (([/COLOR][COLOR=#0000BB]$curhex[/COLOR][COLOR=#007700]==[/COLOR][COLOR=#DD0000]'0a0'[/COLOR][COLOR=#007700]) and ([/COLOR][COLOR=#0000BB]$nexthex[/COLOR][COLOR=#007700]>[/COLOR][COLOR=#DD0000]'1'[/COLOR][COLOR=#007700]) and ([/COLOR][COLOR=#0000BB]$nexthex[/COLOR][COLOR=#007700]<[/COLOR][COLOR=#DD0000]'8'[/COLOR][COLOR=#007700]))
{
[/COLOR][COLOR=#0000BB]$pob[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#DD0000]"
"[/COLOR][COLOR=#007700].[/COLOR][COLOR=#DD0000]'
[LINK] '[/COLOR][COLOR=#007700];
[/COLOR][COLOR=#0000BB]$nam[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#0000BB]TRUE[/COLOR][COLOR=#007700];
[/COLOR][COLOR=#0000BB]$i[/COLOR][COLOR=#007700]+=[/COLOR][COLOR=#0000BB]4[/COLOR][COLOR=#007700];
}
if ([/COLOR][COLOR=#0000BB]$nam[/COLOR][COLOR=#007700]===[/COLOR][COLOR=#0000BB]TRUE[/COLOR][COLOR=#007700])
{
if (([/COLOR][COLOR=#0000BB]$s[/COLOR][COLOR=#007700][[/COLOR][COLOR=#0000BB]$i[/COLOR][COLOR=#007700]]>[/COLOR][COLOR=#DD0000]'1'[/COLOR][COLOR=#007700]) and ([/COLOR][COLOR=#0000BB]$s[/COLOR][COLOR=#007700][[/COLOR][COLOR=#0000BB]$i[/COLOR][COLOR=#007700]]<[/COLOR][COLOR=#DD0000]'8'[/COLOR][COLOR=#007700]))
{
[/COLOR][COLOR=#0000BB]$hx[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#0000BB]substr[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]$s[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000BB]$i[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000BB]2[/COLOR][COLOR=#007700]);
[/COLOR][COLOR=#0000BB]$hx[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#0000BB]chr[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]hexdec[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]$hx[/COLOR][COLOR=#007700]));
[/COLOR][COLOR=#0000BB]$pob[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#0000BB]$pob[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]$hx[/COLOR][COLOR=#007700];
}
else {echo [/COLOR][COLOR=#0000BB]$pob[/COLOR][COLOR=#007700]; [/COLOR][COLOR=#0000BB]$nam[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#0000BB]FALSE[/COLOR][COLOR=#007700];}
}
}
}
[/COLOR][COLOR=#0000BB]?>
[/COLOR]
[/COLOR][/CODE]