парсер

Discussion in 'PHP' started by Xszz, 3 Nov 2007.

  1. Xszz

    Xszz Elder - Старейшина

    Joined:
    23 Apr 2007
    Messages:
    141
    Likes Received:
    42
    Reputations:
    9
    народ , может у кого-то есть , или кто написать может :
    парсер текстовых файлов
    есть файл вида
    Code:
    <Unnamed>:::mmmmm:
    <Unnamed>:::1401288:
    <Unnamed>:::general:
    <Unnamed>:::dryu:
    <Unnamed>:::1513:
    
    надо чтоб парсер убирал последный символ строки . т.е. ':' и :::(три двоеточия) менял на ; (точку с запятой)
    Заранее огромное спасибо.
     
  2. inv

    inv Banned

    Joined:
    3 Aug 2007
    Messages:
    261
    Likes Received:
    143
    Reputations:
    -58
    пхп
    preg_replace('/[\x3A]+/',';'
     
  3. Red_Red1

    Red_Red1 Banned

    Joined:
    12 Jan 2007
    Messages:
    246
    Likes Received:
    258
    Reputations:
    83
    PHP:
    <?
    $rez_file fopen("rez.txt","w");//Создаю файл для результата
    $file_array =  file ("fil2.txt"); //читаю нужный файл в массив
    $count_str count ($file_array);
    for (
    $i 0$i $count_str$i++) //читаю массив строк из файла
    {
      
    $c=$file_array[$i];
      
    $pattern "|(.*):::(.*):|is"
     if (
    preg_match_all($pattern$c$out)) {
     
    //print_r ($out);
     
    $rez=$out[1][0].';'.$out[2][0].chr(13).chr(10);
     
    fputs ($rez_file,$rez);}// запись в файл

      
    fclose ($rez_file);// закрываю файлы
      
    echo "Отработало!!!";
    ?>
     
    1 person likes this.
  4. Xszz

    Xszz Elder - Старейшина

    Joined:
    23 Apr 2007
    Messages:
    141
    Likes Received:
    42
    Reputations:
    9
    Огромное человеческое спасибо !
    ++
     
  5. demonoid

    demonoid Banned

    Joined:
    12 Jan 2007
    Messages:
    101
    Likes Received:
    111
    Reputations:
    27
    Просто тренировка :)
    Code:
    #!perl
    use strict;
    use warnings;
    
    my $s ='<Unnamed>:::1513:' =~ /<(.+)>:::(.+):/g;
    print "$1;;;$2";
    Code:
    C:\>p.pl
    Unnamed;;;1513
     
    2 people like this.
  6. Xszz

    Xszz Elder - Старейшина

    Joined:
    23 Apr 2007
    Messages:
    141
    Likes Received:
    42
    Reputations:
    9
    Народ , а как дописать , чтоб строки начинающиеся с <Unnamed> удалялись ?
    Спасибо .
     
    1 person likes this.
  7. Red_Red1

    Red_Red1 Banned

    Joined:
    12 Jan 2007
    Messages:
    246
    Likes Received:
    258
    Reputations:
    83
    PHP:
    <? 
    $rez_file fopen("rez.txt","w");//Создаю файл для результата 
    $file_array =  file ("fil2.txt"); //читаю нужный файл в массив 
    $count_str count ($file_array); 
    for (
    $i 0$i $count_str$i++) //читаю массив строк из файла 

      
    $c=$file_array[$i]; 
      
    $pattern "|(.*):::(.*):|is";  
     if (
    preg_match_all($pattern$c$out)) 
      { 
        if (
    $out[1][0]!='<Unnamed>')
         {
          
    $rez=$out[1][0].';'.$out[2][0].chr(13).chr(10); 
          
    fputs ($rez_file,$rez);
         }
      }
    }  
      
    fclose ($rez_file);// закрываю файлы 
      
    echo "Отработало!!!"
    ?>
     
  8. NOmeR1

    NOmeR1 Everybody lies

    Joined:
    2 Jun 2006
    Messages:
    1,068
    Likes Received:
    783
    Reputations:
    213
    Red_Red1, извращённый код если честно.
    PHP:
    <?

    $file 'txt.txt';
    $echo file_get_contents($file);

    foreach( 
    file($file) as $in_file )
    {
        if( 
    preg_match('/^<Unnamed>/'$in_file) )
        {
            
    $echo str_replace$in_fileNULL$echo );
        }
    }

    echo( 
    $echo );

    ?>
     
  9. Red_Red1

    Red_Red1 Banned

    Joined:
    12 Jan 2007
    Messages:
    246
    Likes Received:
    258
    Reputations:
    83
    Согласен. Но была заготовка - переделал под просьбу Xszz. Я же только учусь :). Когда писал опирался больше на логику алгоритма.... взять файл, прочитать построкам, найти нужное, поменять и т.д.... Спасибо за критику :) Учту.
    Неожидал такой востребованности.... странно плюсики поставили те кто не просил.... интересно, неужели так часто применяются такие скрипты.
     
  10. astrologer

    astrologer Elder - Старейшина

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    Можно использовать preg_grep и обойтись без цикла
     
    1 person likes this.
  11. Xszz

    Xszz Elder - Старейшина

    Joined:
    23 Apr 2007
    Messages:
    141
    Likes Received:
    42
    Reputations:
    9
    Ещё раз Спасибо ! ;)
    ++
     
  12. ~Hidrag~

    ~Hidrag~ Member

    Joined:
    7 Dec 2006
    Messages:
    19
    Likes Received:
    17
    Reputations:
    28
    Java :)
    PHP:
    package temppack;

    import java.io.*;

    public class 
    Main {
        
        public static 
    void main(String[] args) {
            try {
                
    BufferedReader br = new BufferedReader(new FileReader("inputfile.txt"));
                
    FileOutputStream fos = new FileOutputStream("out.txt");
                
    String l=null;
                while ((
    l=br.readLine())!=null) {
                    
    l=l.substring(0,l.length()-1).replaceAll(":::",";");
                    if (!
    l.contains("<Unnamed>")) fos.write((l+"\n").getBytes());
                }
                
    br.close();
                
    fos.close();
            } catch (
    IOException ex) {
                
    System.err.println("Ошибка нах!");
                
    ex.printStackTrace();
            }
            
        }
        
    }