Показать сообщение отдельно
Непрочитано 05.05.2012, 17:41   #19
Аватар для Yorie

По умолчанию Re: Парсер xml'ки

Цитата:
Сообщение от rage Посмотреть сообщение
эхх поколение пехепистов
 
 
#!/usr/bin/perl
use strict;
 
my($npcId, $gchance);
open(FH,"<npc.xml") or die "$!\n";
while(<FH>)
{
  my $str = $_;
  if($str =~/npc id="(\d+)"/)
  {
    $npcId = $1;
  }
  elsif($str =~/group chance="(.+?)"/)
  {
    $gchance = $1;
  }
  elsif($str =~/\<reward\s+item_id="(\d+)" min="(\d+)" max="(\d+)" chance="(.+?)".+?\<\!--(.+?)--\>/)
  {
    print "$npcId\t$5 $2-$3 [$gchance * 100 / $4]\n";
  }
}
close(FH);
 
Code: Perl
И работать будет явно побыстрее...
 
$data = explode("\n", file_get_contents('npc.xml'));
foreach ($data as $row)
{
    if (preg_match('/npc id\="(\d+)"/', $row, $match))
        $npcId = (int)$match[1];
    else if (preg_match('/group chance="(.+?)"/', $row, $match))
        $groupChance = $match[1];
    else if (preg_match('/\<reward\s+item_id="(\d+)" min="(\d+)" max="(\d+)" chance="(.+?)".+?\<\!--(.+?)--\>/', $row, $match))
        echo $npcId . "\t" . $match[1] . "\t" . $match[2] . '-' . $match[3] . "\t" . $match[4] . "\t" . $match[5] . "\n";
}
 
Code: PHP
Работать будет никак не медленнее Perl'а. Это не поколение пехепистов, а тех, кто не умеет быстро решать поставленные задачи
__________________
// aka Deft
Yorie вне форума Ответить с цитированием
Сказали спасибо: