Dynamisches Inhaltsverzeichniss erstellen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Dynamisches Inhaltsverzeichniss erstellen

    Hallo zusammen.

    Ich möchte aus einer Datei (.txt) automatisch ein Inhaltsverzeichniss erstellen. Nur kriege ich es nicht ganz gerissen. Die txt enthält beliebigen Text und Headlines. Die Headlines habe ich mit "@"- Zeichen umschlossen
    z.B. @Headline@. Nun lese ich die Datei Zeilenweise aus mit file() und hole mir die Headlines. Dannach möchte ich den Array Splitten um die Leeren Elemente zu kicken. Und hier harperts...
    Was mach ich falsch wo liegt mein Fehler.


    Hier mein Ansatz:

    PHP-Code:
    $lines file ('file.txt');
    foreach (
    $lines as $line_num => $line
    {
        
    $line;
        
    //echo "$line_num $line<br>";
        
            
    if (preg_match("/^@(.*)@/Usi",$line,$ausgabe))
            {echo 
    "$line_num ausgabe[0]: $ausgabe[0]<br>"$headline[$line_num] = $ausgabe[0];}
            else
            {echo 
    "$line_num :$ausgabe[0]<br>";}

            
    }
    $anz count($headline);
    echo 
    "<br>Vor der Bearbeitung Inhalte: $anz<br>";

    echo 
    "0 $headline[0]<br>";
    echo 
    "1 $headline[1]<br>";
    echo 
    "2 $headline[2]<br>";
    echo 
    "3 $headline[3]<br>";
    echo 
    "4 $headline[4]<br>";
    echo 
    "5 $headline[5]<br>";
    echo 
    "6 $headline[6]<br>";
    echo 
    "7 $headline[7]<br>";


    for (
    $i=0;$i<$line_num;$i++)
        { 
        if (
    $headline[$i] == "")
    //array_splice ( array input, int offset [, int length [, array replacement]])
        
    {array_splice($headline$i,1); echo "<br>array_splice($headline$i, 1)<br>";}
        else 
        {
    $headline[$i] = $headline[$i]; echo "<br>$headline[$i] = $headline[$i]<br>";}
        }
        
    $anz count($headline);
    echo 
    "<br>Nach der Bearbeitung Inhalte: $anz<br>";
    echo 
    "<br>Array nach der Bearbeitung<br>";

    echo 
    "0 $headline[0]<br>";
    echo 
    "1 $headline[1]<br>";
    echo 
    "2 $headline[2]<br>";
    echo 
    "3 $headline[3]<br>";
    echo 
    "4 $headline[4]<br>";
    echo 
    "5 $headline[5]<br>";
    echo 
    "6 $headline[6]<br>";
    echo 
    "7 $headline[7]<br>"


    Ps: Vielleicht ist es die Hitze die mein Hirn garrt

    und hier die Txt
    Angehängte Dateien
    Zuletzt geändert von reaVen; 04.08.2003, 11:40.
    Ein blue screen ist nicht immer was schlimmes... es hängt nur davon ab wo er zu sehen ist !
    www.d-creationz.de

  • #2
    Hi,

    ich bin mir nicht sicher aber

    PHP-Code:
    if (preg_match("/^@(.*)@/Usi",$line,$ausgabe)) 
    müsste das nicht so heissen

    PHP-Code:
    if (preg_match("/^@(.)*@/Usi",$line,$ausgabe)) 
    ? Also der stern aus der klammer raus ?

    gruss

    rth
    H I L F E
    GD FreeType Antialising
    Gesuch PHP Entwicklungsumgebung
    ------------------------------------------
    Der Cmabrigde rael tset, sruf whoin du wlilst

    Kommentar


    • #3
      Also den Match findet er ja....

      und der * ist da schon gold richtig :

      Standard-Quantifier sind:

      *
      Der Stern steht für Anzahlen von 0 oder mehr.

      Beispiel: /.*/

      Trifft auf jede beliebige Zeichenkette (auch eine leere) zu.

      Da die Headline ja alles mögliche sein kann.

      Das Problem liegt in der Verarbeitung mit array_splice() Da der Array am Anfang an Pos 0 und 6 ein Element hat und nach dem split nur noch an Pos 1 was findet. Was mich noch verwirrt ist die Zeile:

      PHP-Code:
      if (preg_match("/^@(.*)@/Usi",$line,$ausgabe))
              {echo 
      "$line_num ausgabe[0]: $ausgabe[0]<br>"$headline[$line_num] = $ausgabe[0];} 
      Da ich hier die $ausgabe Array Pos auch auf 1 setzen kann und er immernoch die richtigen werte liefet.
      Ein blue screen ist nicht immer was schlimmes... es hängt nur davon ab wo er zu sehen ist !
      www.d-creationz.de

      Kommentar


      • #4
        Da ich hier die $ausgabe Array Pos auch auf 1 setzen kann und er immernoch die richtigen werte liefet
        das ist schon okay,

        docu:
        If matches is provided, then it is filled with the results of search. $matches[0] will contain the text that matched the full pattern, $matches[1] will have the text that matched the first captured parenthesized subpattern, and so on.

        Wenn ich dich richtig verstehe, willst du alle headlines ohne die leeren ?

        dann mach doch einfach

        PHP-Code:
        if (preg_match("/^@(.*)@/Usi",$line,$ausgabe))
                {
                   if (
        $ausgabe[1]!="")
                   {
                    echo 
        "$line_num ausgabe[1]: $ausgabe[1]<br>";
                   
        $headline[$line_num] = $ausgabe[1];
                }

        oder hab ich es noch nicht verstanden ?

        gruss

        rth
        H I L F E
        GD FreeType Antialising
        Gesuch PHP Entwicklungsumgebung
        ------------------------------------------
        Der Cmabrigde rael tset, sruf whoin du wlilst

        Kommentar


        • #5
          Jo das ist richtig. Ich will nur die Lines mit der Headline. Die erste Ausgabe geht ja auch mit deinem Teil nur brauche ich die Ausgelesenen Headlines in einem Neuen Array der eine durchlaufende Nummer hat. Ich benötige den Array zur weiteren Ausgabe. Also wie schaufel ich die Pos [1] (für alle gefundenen) in einen Nummerierten array ???
          Danke schonmal für die hilfe die erst Ausgabe klapt jetzte schon mal gut.
          Ein blue screen ist nicht immer was schlimmes... es hängt nur davon ab wo er zu sehen ist !
          www.d-creationz.de

          Kommentar


          • #6
            PHP-Code:
            $zaehler=0// womit soll dein array beginnen ?
            $neu_headline=array(); // dein neues array mit deiner nummerierung
            if (preg_match("/^@(.*)@/Usi",$line,$ausgabe))
                    {
                       if (
            $ausgabe[1]!="")
                       {
                        echo 
            "$line_num ausgabe[1]: $ausgabe[1]<br>";
                       
            $headline[$line_num] = $ausgabe[1];
                       
            $neu_headline[$zaehler]=$ausgabe[1];
                       
            $zaehler++;
                    }

            Ich denke das dürfte es sein.

            gruss

            rth
            H I L F E
            GD FreeType Antialising
            Gesuch PHP Entwicklungsumgebung
            ------------------------------------------
            Der Cmabrigde rael tset, sruf whoin du wlilst

            Kommentar


            • #7
              Super genau das ist es ! ich danke dir recht herzlich.
              Ein blue screen ist nicht immer was schlimmes... es hängt nur davon ab wo er zu sehen ist !
              www.d-creationz.de

              Kommentar


              • #8
                kein problem
                H I L F E
                GD FreeType Antialising
                Gesuch PHP Entwicklungsumgebung
                ------------------------------------------
                Der Cmabrigde rael tset, sruf whoin du wlilst

                Kommentar

                Lädt...
                X