tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
2
ZUGRIFFE
304
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von igfas
    igfas igfas ist offline Mitglied Gold
    Registriert seit
    Jun 2002
    Beiträge
    217
    Hallo zusammen,

    vor lauter Bäume sehe ich den Wald nicht mehr. Ich versuche gerade verzweifelt ein kleine
    Funktion zu schreiben die eine Textdatei zerlegt und mir diese in einem Array zurückgibt:

    Inhalt der Datei:

    <1>Ebene1</1>
    Freitext Freitext Freitext
    Freitext Freitext Freitext
    Freitext Freitext Freitext
    Freitext Freitext Freitext
    Freitext Freitext Freitext
    <2>Ebene2</2>
    Freitext Freitext Freitext
    Freitext Freitext Freitext
    Freitext Freitext Freitext
    <3>Ebene2</3>
    Freitext Freitext Freitext
    Freitext Freitext Freitext
    Freitext Freitext Freitext
    <1>Ebene1</1>
    Freitext Freitext Freitext
    Freitext Freitext Freitext
    Freitext Freitext Freitext
    Freitext Freitext Freitext
    Freitext Freitext Freitext
    <2>Ebene2</2>
    Freitext Freitext Freitext
    Freitext Freitext Freitext
    Freitext Freitext Freitext
    <3>Ebene2</3>
    Freitext Freitext Freitext
    Freitext Freitext Freitext
    Freitext Freitext Freitext


    Der Array, den ich versuche zu bauen:

    Array [0]
    [1] => Ebene 1
    [2] => Der Freitext
    [1]=>Ebene 2
    [2] => Der Freitext
    usw.

    Ich hoffe ich könnt mir helfen.

    Vielen Dank.

    IGFAS
     

  2. #2
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Zerlege einfach den Inhalt in Zeilen und prüfe den Anfang jeder Zeile auf die entsprechenden Merkmale.
     
    Markus Wulftange

  3. #3
    Avatar von igfas
    igfas igfas ist offline Mitglied Gold
    Registriert seit
    Jun 2002
    Beiträge
    217
    Der Vollständigkeitshalber:

    Für diesen Erguss habe ich nun 4h gebraucht... es gibt Tage da bring der beste Kaffee auch nix... wenn man total verpeilt ist. Es gibt sicherlich auch einfachere Möglichkeiten!

    Grüsse
    Alexander

    Textdatei:

    <point>
    <name>X1</name>
    <level>1</level>
    <create>11.12.1983</create>
    <change>25.02.2005</change>
    <editabel>true</editabel>
    <content>
    sadf ksadlf k12132#a
    asdfa sdf5asd4f87jsa df
    </content>
    </point>

    <point>
    <name>X2</name>
    <level>2</level>
    <create>11.12.1983</create>
    <change>25.02.2005</change>
    <editabel>true</editabel>
    <content>
    sadf ksadlf kjsa d
    asdfas df4156fsad fasdf asdf
    </content>
    </point>

    <point>
    <name>X3</name>
    <level>3</level>
    <create>11.12.1983</create>
    <change>25.02.2005</change>
    <editabel>true</editabel>
    <content>
    sadf ksadlf kjsa df
    sadfasd fas dfasd fasdf
    sad fasdf
    </content>
    </point>

    <point>
    <name>X2</name>
    <level>2</level>
    <create>11.12.1983</create>
    <change>25.02.2005</change>
    <editabel>true</editabel>
    <content>
    sadf ksadasdf asdfl
    asdfasdf f kjsa df
    </content>
    </point>


    der PHP Code:

    PHP-Code:
    $content_file='./content/content.htm';

    function 
    mkpoints($_file){
     function 
    getcontent($conten_file){
      
    $openfile fopen($conten_file"r");
      
    $rtn_array=array();
      
    $rtn_string;

      if(
    $openfile){
       
    $counter 0;
       while(!
    feof($openfile)){
        
    $read=fgets($openfile10000);
        
    array_push($rtn_array,trim($read));
        
    $rtn_string=$rtn_string.trim($read);
        
    $counter++;
       }
       
    fclose($openfile);
      }
      return array(
    $rtn_array,$rtn_string);
     }

     function 
    readxml($data){
      
    $xml_parser xml_parser_create();

      
    xml_parse_into_struct($xml_parser$data$vals$index);
      
    xml_parser_free($xml_parser);
      
      
    $params = array();
      
    $level = array();
      foreach (
    $vals as $xml_elem) {
        if (
    $xml_elem['type'] == 'open') {
         if (
    array_key_exists('attributes',$xml_elem)) {
           list(
    $level[$xml_elem['level']],$extra) = array_values($xml_elem['attributes']);
         } else {
           
    $level[$xml_elem['level']] = $xml_elem['tag'];
         }
        }
        if (
    $xml_elem['type'] == 'complete') {
         
    $start_level 1;
         
    $php_stmt '$params';
         while(
    $start_level $xml_elem['level']) {
           
    $php_stmt .= '[$level['.$start_level.']]';
           
    $start_level++;
         }
         
    $php_stmt .= '[$xml_elem[\'tag\']] = $xml_elem[\'value\'];';
         eval(
    $php_stmt);
        }
      }
      return 
    $params;
     }
     
    $output=array();
     
    $_cto=getcontent($_file);
     
    $xml_stacks=explode('<point>',$_cto[1]);
     for(
    $r=0;$r<count($xml_stacks);$r++){
      
    $xml_payload=explode('</point>',$xml_stacks[$r]);
      
    $xml_stack=readxml('<point>'.$xml_payload[0].'</point>');
      
    array_push($output,$xml_stack);
     }
     return 
    $output;
    }

    $rtn=mkpoints($content_file);
    print_r($rtn); 
    Ausgabe:
    HTML-Code:
    Array
    (
        [0] => Array
            (
                [POINT] => 
            )
    
        [1] => Array
            (
                [POINT] => Array
                    (
                        [NAME] => X1
                        [LEVEL] => 1
                        [CREATE] => 11.12.1983
                        [CHANGE] => 25.02.2005
                        [EDITABEL] => true
                        [CONTENT] => sadf ksadlf k12132#aasdfa sdf5asd4f87jsa df
                    )
    
            )
    
        [2] => Array
            (
                [POINT] => Array
                    (
                        [NAME] => X2
                        [LEVEL] => 2
                        [CREATE] => 11.12.1983
                        [CHANGE] => 25.02.2005
                        [EDITABEL] => true
                        [CONTENT] => sadf ksadlf kjsa dasdfas df4156fsad fasdf asdf
                    )
    
            )
    
        [3] => Array
            (
                [POINT] => Array
                    (
                        [NAME] => X3
                        [LEVEL] => 3
                        [CREATE] => 11.12.1983
                        [CHANGE] => 25.02.2005
                        [EDITABEL] => true
                        [CONTENT] => sadf ksadlf kjsa dfsadfasd fas dfasd fasdfsad fasdf
                    )
    
            )
    
        [4] => Array
            (
                [POINT] => Array
                    (
                        [NAME] => X2
                        [LEVEL] => 2
                        [CREATE] => 11.12.1983
                        [CHANGE] => 25.02.2005
                        [EDITABEL] => true
                        [CONTENT] => sadf ksadasdf asdflasdfasdf f kjsa df
                    )
    
            )
    }
     

Ähnliche Themen

  1. C++ Int zerlegen
    Von Shadow1911 im Forum C/C++
    Antworten: 21
    Letzter Beitrag: 25.08.10, 20:23
  2. Antworten: 3
    Letzter Beitrag: 10.12.08, 12:01
  3. Textdatei in neue Textdatei schreiben
    Von YukiNoHana im Forum PHP
    Antworten: 15
    Letzter Beitrag: 07.09.08, 17:43
  4. CSV - Zerlegen
    Von Raven280438 im Forum PHP
    Antworten: 5
    Letzter Beitrag: 04.12.07, 08:59
  5. C# INI zerlegen
    Von toko84 im Forum .NET Café
    Antworten: 5
    Letzter Beitrag: 16.05.07, 10:32