Hilfe bei explode Befehl

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

  • 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
    Zuletzt geändert von markusschmitt; 26.04.2003, 02: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

    Kommentar


    • #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

      Kommentar


      • #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

        Kommentar


        • #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
          Zuletzt geändert von markusschmitt; 25.04.2003, 16:58.

          Kommentar


          • #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

            Kommentar


            • #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

              Kommentar


              • #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
                Zuletzt geändert von markusschmitt; 26.04.2003, 12:28.

                Kommentar


                • #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

                  Kommentar


                  • #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
                    Zuletzt geändert von markusschmitt; 26.04.2003, 13:32.

                    Kommentar


                    • #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

                      Kommentar


                      • #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

                        Kommentar


                        • #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
                          Zuletzt geändert von markusschmitt; 26.04.2003, 15:10.

                          Kommentar


                          • #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

                            Kommentar


                            • #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

                              Kommentar

                              Lädt...
                              X