Hilfe bei explode Befehl

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Hilfe bei explode Befehl

    Wenn ich ftp_rawlist ausführe bekomm ich fogendende Ausgabe
    drwxr-xr-x 1 ftp ftp 0 Apr 25 02:20 4 Ordner
    drwxr-xr-x 1 ftp ftp 0 Mar 09 15:23 Ordner 2
    drwxr-xr-x 1 ftp ftp 0 Mar 09 15:23 Ordner 3 gross
    drwxr-xr-x 1 ftp ftp 0 Apr 25 02:18 Ordner1
    Wenn ich jetzt die Ordner selbst haben will muss ich mit Leerzeichen exploden.
    PHP Code:
    $rawlist ftp_rawlist($open$current_path);
    foreach (
    $rawlist as $file)
    {
        if (
    $file[0] == 'd')
        {
               echo 
    $file "<br>";
               
    $ausgabe[0][] = explode (' '$file);
        }
    }
    foreach (
    $ausgabe[0] as $verzeichnis)
    echo 
    $verzeichnis[count($verzeichnis)-1] . "<br>"
    Ausgabe:
    Ordner
    2
    gross
    Ordner1
    Wie ihr seht bekomm ich Probleme. Wie schaff ich es aber den kompletten Verzeichnisnamen zu extrahieren. Noch was hier nehme ich ja das letzte Arrayelement. Wie bekomm ich zum Beispiel das 5te Element raus?

    Mfg Markus
    Last edited by markusschmitt; 26-04-2003, 01:01.

  • #2
    das wird mit explode nichts.
    versuch mal lieber einen regulären Ausdruck.
    So in der Art:

    3 Felder nach dem Doppelpunkt der Uhrzeit
    bis zum Zeilenende


    ungetestet:

    "#:[0-9]{2} (.*)\r\n#"
    TBT

    Die zwei wichtigsten Regeln für eine berufliche Karriere:
    1. Verrate niemals alles was du weißt!


    PHP 2 AllPatrizier II Browsergame

    Comment


    • #3
      Könntest du das bitte ein wenig besser erklären. Hab sowas noch nicht gebraucht und steh mit der Info jetzt ein wenig im Bodenlosen. Zu welcher Funktion gehört des oder kann ich des in die Eckigen Klammer des Arrays schreiben praktisch als direkter Aufruf das alle Elemente ab dieser Positon angezeigt werden?
      Wenn du's nicht erklären willst kannst auch eine Seite hinschreiben. Selberlernen macht eh mehr spass ;-) .

      Mfg Markus

      Comment


      • #4
        wenn man selber lernen schon anbietet:

        http://www.php.net/manual/de/functio...-match-all.php
        TBT

        Die zwei wichtigsten Regeln für eine berufliche Karriere:
        1. Verrate niemals alles was du weißt!


        PHP 2 AllPatrizier II Browsergame

        Comment


        • #5
          Ist doch ein gutes Angebot
          OK also wenn ichs richtig verstanden hab sucht er in dem String bis die erste Übereinstimmung gefunden wurde und sobald das zutrifft wird ausgegeben ab der Stelle. Jetzt wird mir nur die Syntax nicht ganz klar
          Teil 1:
          "#:[0-9]{2} //heisst also es kommt zuerst irgendwas, dann ein : dann zwei Zahlen von 0-9
          Teil2
          (.*)\r\n#" //(.*) heisst beliebiges Zeichen welches beliebig oft dran kommen kann. \r heißt Wagenrücklauf und \n heißt Zeilenumbruch.

          Mein String sieht doch folgendermaßen aus
          "blablalba ftp ftp 12:18 Ordner"
          Wofür brauch ich da jetzt einen Zeilenumbruch bzw einen Wagenrücklauf?

          Noch was:

          Hab Probleme mit der Ausgabe wenn ich es so mach. Bekomm nur Array Array... ausgegeben
          PHP Code:
          foreach ($rawlist as $file)
          {
              if (
          $file[0] == 'd')
              {
                  
          preg_match_all("#:[0-9]{2} (.*)\r\n#"$file$ausgabe[0][]);
              }
          }
          foreach (
          $ausgabe[0] as $verzeichnis)
          echo 
          $verzeichnis[count($verzeichnis)-1] . "<br>"
          Mfg Markus
          Last edited by markusschmitt; 25-04-2003, 15:58.

          Comment


          • #6
            Also ich tüftle jetzt seit 4 Stunden dran rum. Das einzige was ich raus bekomme ist Array Array Array usw. .Bevor ich anfange meine Tastatut zu ledieren helft mir bitte nochmal. Hab die letzte foreach Schleife rausgeschmissen und mit einer einfachen for Schleife ersetzt.
            PHP Code:
            foreach ($rawlist as $file)
            {
                if (
            $file[0] == 'd')
                {
                    
            preg_match_all("#:[0-9]{2}(.*)#"$file$ausgabe[0][]);
                }
            }
            for (
            $i 0$i sizeof($ausgabe[0]); $i++)
            {
                echo 
            $ausgabe[$i];

            Ergebnis:
            Array

            Warning: Undefined offset: 1 in C:\apache\htdocs\neuftp\suche.php on line 41

            Warning: Undefined offset: 2 in C:\apache\htdocs\neuftp\suche.php on line 41

            Warning: Undefined offset: 3 in C:\apache\htdocs\neuftp\suche.php on line 41

            .....

            Mfg Markus

            Comment


            • #7
              mach mal ein

              PHP Code:
              preg_match_all("#:[0-9]{2}(.*)#"$file$ausgabe);
              echo 
              "<pre>";
              prrint_r($ausgabe);
              echo
              "</pre>"
              dann siehste, das es ein doppeltes Array ist
              TBT

              Die zwei wichtigsten Regeln für eine berufliche Karriere:
              1. Verrate niemals alles was du weißt!


              PHP 2 AllPatrizier II Browsergame

              Comment


              • #8
                OK, habs geändert.
                PHP Code:
                echo "</b><br><br><pre>";
                $rawlist ftp_rawlist($open$current_path);
                foreach (
                $rawlist as $file)
                {
                    if (
                $file[0] == 'd')
                    {
                        
                preg_match_all("#:[0-9]{2}(.*)#"$file$ausgabe);
                    }
                }

                print_r($ausgabe);

                foreach (
                $ausgabe as $verzeichnis)
                {
                    echo 
                $verzeichnis[count($verzeichnis)-1] . "<br>";
                }
                echo 
                "</pre>"
                Ausgabe:
                [QUOTE]
                Array
                (
                [0] => Array
                (
                [0] => :18 Ordner1
                )

                [1] => Array
                (
                [0] => Ordner1
                )

                )
                :18 Ordner1 Ordner1
                [/QUOTE
                Zu deutsch heißt des jetzt inetewa das in Ausgabe ein Array ist in dessen jetzt wieder ein Array ist welches immer mit [0] beginnt? Warum schreibt des des nicht gleich in des eine Array? Wieso hab ich jetzt eigentlich nicht inetwa 8 Array Elemente sondern nur 2? Wo ist der Rest? Stimmt der Befehl preg_match_all etwa nicht oder wieso nur 2?

                Mfg Markus
                Last edited by markusschmitt; 26-04-2003, 11:28.

                Comment


                • #9
                  Original geschrieben von markusschmitt
                  Also ich tüftle jetzt seit 4 Stunden dran rum. Das einzige was ich raus bekomme ist Array Array Array usw. .Bevor ich anfange meine Tastatut zu ledieren helft mir bitte nochmal. Hab die letzte foreach Schleife rausgeschmissen und mit einer einfachen for Schleife ersetzt.
                  PHP Code:
                  foreach ($rawlist as $file)
                  {
                      if (
                  $file[0] == 'd')
                      {
                          
                  preg_match_all("#:[0-9]{2}(.*)#"$file$ausgabe[0][]);
                      }
                  }
                  for (
                  $i 0$i sizeof($ausgabe[0]); $i++)
                  {
                      echo 
                  $ausgabe[$i];

                  Ergebnis:



                  Mfg Markus
                  PHP Code:
                  foreach ($rawlist as $file)
                  {
                      if (
                  $file[0] == 'd')
                      {
                          
                  preg_match_all("#:[0-9]{2}(.*)#"$file$ausgabe[0][]);
                      }
                  }
                  for (
                  $i 0$i sizeof($ausgabe[0]); $i++)
                  {
                      echo 
                  $ausgabe[0][$i];

                  nun sollte das auch gehn

                  Comment


                  • #10
                    Sorry es klappt nicht. Ich bekomm...
                    Array[0]
                    Array[1]
                    Array[2]
                    Array[3]
                    Array[4]
                    Array[5]
                    ...
                    Array[11]
                    mit folgendem Code, also fast 1:1
                    PHP Code:
                    foreach ($rawlist as $file)
                    {
                        if (
                    $file[0] == 'd')
                        {
                            
                    preg_match_all("#:[0-9]{2}(.*)#"$file$ausgabe[0][]);
                        }
                    }
                    for(
                    $i=0$i<sizeof($ausgabe[0]); $i++)
                    {
                        echo 
                    "$ausgabe[0][$i] <br>";

                    Übrigens:
                    Ergebnis von "print_r($ausgabe);"

                    PHP Code:
                    Array
                    (
                        [
                    0] => Array
                            (
                                [
                    0] => Array
                                    (
                                        [
                    0] => Array
                                            (
                                                [
                    0] => :53 --==[FTP-SERVER]==--  //hier ist etwas falsches drin
                                            
                    )

                                        [
                    1] => Array
                                            (
                                                [
                    0] =>  --==[FTP-SERVER]==--   //hier ist es richtig
                                            
                    )

                                    )

                                [
                    1] => Array
                                    (
                                        [
                    0] => Array
                                            (
                                                [
                    0] => :20 --==[E-Books]==--
                                            )

                                        [
                    1] => Array
                                            (
                                                [
                    0] =>  --==[E-Books]==--
                                            )

                                    )
                    .... 
                    wenn ichs so mache:
                    preg_match_all("#:[0-9]{2}(.*)#", $file, $ausgabe[]);
                    PHP Code:
                    Array
                    (
                        [
                    0] => Array
                            (
                                [
                    0] => Array
                                    (
                                        [
                    0] => :53 --==[FTP-SERVER]==--
                                    )

                                [
                    1] => Array
                                    (
                                        [
                    0] =>  --==[FTP-SERVER]==--
                                    )

                            )

                        [
                    1] => Array
                            (
                                [
                    0] => Array
                                    (
                                        [
                    0] => :20 --==[E-Books]==--
                                    )

                                [
                    1] => Array
                                    (
                                        [
                    0] =>  --==[E-Books]==--
                                    )

                            )
                    ... 
                    Was ist denn daran falsch?

                    Mfg Markus
                    Last edited by markusschmitt; 26-04-2003, 12:32.

                    Comment


                    • #11
                      PHP Code:
                      foreach ($rawlist as $file)
                      {
                          if (
                      $file[0] == 'd')
                          {
                              
                      preg_match_all("#:[0-9]{2}(.*)#"$file$ausgabe[0][]);
                          }
                      }
                      for(
                      $i=0$i<sizeof($ausgabe[0]); $i++)
                      {
                          
                      printf($ausgabe[0][$i]);


                      versuch ma

                      Comment


                      • #12
                        Fehlermeldung:
                        Warning: Array to string conversion in C:\apache\htdocs\neuftp\suche.php on line 41
                        Array
                        Warning: Array to string conversion in C:\apache\htdocs\neuftp\suche.php on line 41
                        Array
                        ...

                        Mfg Markus

                        Comment


                        • #13
                          OK ich habs jetzt mal geschafft ein Ergebnis raus zu bekommen.
                          PHP Code:
                          foreach ($rawlist as $file)
                          {
                              if (
                          $file[0] == 'd')
                              {
                                  
                          preg_match_all("#:[0-9]{2}(.*)#"$file$ausgabe[]);
                              }
                          }
                          for(
                          $i=0$i<sizeof($ausgabe); $i++)
                          {
                              foreach(
                          $ausgabe[$i] as $letztes)
                              {
                                  echo 
                          $letztes[count($letztes)-1] . "<br>";
                              }

                          Ergebnis:
                          :53 --==[FTP-SERVER]==--
                          --==[FTP-SERVER]==--
                          :20 --==[E-Books]==--
                          --==[E-Books]==--
                          Jetzt brauch ich nochmal eure Hilfe. Wie ihr seht ist --==[FTP-SERVER]==-- ein wenig eingeruckt was darauf hindeutet das am preg_match_all Befehl etwas nicht stimmt. Er nimmt mir noch ein Leerzeichen mit? Wie kann ich das beheben so das das Leerzeichen nicht mehr mitgenommen wird?

                          Mfg Markus
                          Last edited by markusschmitt; 26-04-2003, 14:10.

                          Comment


                          • #14
                            OK hab ich jetzt auch rausgekillt

                            preg_match_all("#:[0-9]{2} (.*)#", $file, $ausgabe[]);
                            -----------------------------------^--------------------------------
                            Leerzeichen eingefüg jetzt stimmts.

                            Fragen:
                            1. Wieso wir in $ausgabe[] das richtige und das falsche gespeicher?
                            2. Wie kann ich mir jedes 2te Arrayelement ausgeben lassen?

                            Mfg Markus

                            Comment


                            • #15
                              OK ich habs jetzt mal alles rausgefiltert und es klappt!!!

                              PHP Code:
                              $current_path ftp_pwd($open);
                              echo 
                              "</b><br><br><pre>";
                              $rawlist ftp_rawlist($open$current_path);
                              foreach (
                              $rawlist as $file)
                              {
                                  if (
                              $file[0] == 'd')
                                  {
                                      
                              preg_match_all("#:[0-9]{2} (.*)#"$file$ausgabe[]);
                                  }
                              }
                              print_r($ausgabe);
                              for(
                              $i=0$i<sizeof($ausgabe); $i++)
                              {
                                  foreach(
                              $ausgabe[$i] as $letztes)
                                  {
                                      
                              $haus[] = $letztes[count($letztes)-1] . "<br>";
                                  }
                              }
                              foreach(
                              $haus as $variable)
                              {
                                  if(
                              $variable[0] == ':')
                                  {
                                  }
                                  else
                                  {
                                      
                              $ergebnis[] = $variable;
                                  }
                              }
                              for (
                              $d=0$d<sizeof($ergebnis);$d++)
                              {
                                  echo 
                              $ergebnis[$d];
                              }
                              echo 
                              "</pre>"
                              Mfg Markus

                              Comment

                              Working...
                              X