Zwei Probleme : eregi & Opitimierung einer Funktion

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

  • Zwei Probleme : eregi & Opitimierung einer Funktion

    Hallo

    ich brauch mal wieder hilfe....

    1.Problem
    ich möchte diesen String umwandeln.

    -rw-rw-rw- 1 user group 976655 Jan 21 1999 Dateinname mit Leerzeichen.zip

    Das Ergebnis soll sein:

    Dateinname mit "Leerzeichen.zip 976655 21.1 oder Jan.1999" heissen

    Ein Problem gibts dabei auch noch: es können auch solche Strings auftreten

    -rw-rw-rw- 1 user group 1477924 Apr 11 10:28 Dateinname mit Leerzeichen.zip

    also keine Jahrangabe, dafür aber ne Zeitangabe (Stunden:minuten).


    könnt ihr mir helfen ?! ich krieg gleich die Krise.

    2.Problem

    ich starte eine Auflistung aller Datein und Verzeichnisse & Linkz auf einem FTP-Server. Klappt alles super, doch krieg ich die nicht so geordnet wie ich das möchte.
    Ich möchte zuerst die Verzeichnisse, dann die Datein und dann die Linkz.
    Bisher mach ich das mit 3 foreach schleifen in der der selbe Array jedesmal wieder durchsucht wird.
    hier der Code:


    PHP-Code:
    foreach($rawlist as $value) {

            
    $laenge=strlen($value1);
            
    $value1=substr($valuelaenge,1);
            
    //echo "$value1";

           
    if ($value1=="d")
           {
               
    $dir_anzahl=$dir_anzahl+1;
               
    $array explode(" ",$value);

               echo  
    "&lt;DIR&gt; $value<br>";

           }

        }
    foreach(
    $rawlist as $value) {

            
    $laenge=strlen($value1);
            
    $value1=substr($valuelaenge,1);
            
    //echo "$value1";


           
    if ($value1=="-")
           {
               
    $file_anzahl=$file_anzahl+1;
               
               echo  
    "&lt;FILE&gt; $value<br>";

           }

         }
    foreach(
    $rawlist as $value) {

            
    $laenge=strlen($value1);
            
    $value1=substr($valuelaenge,1);
            
    //echo "$value1";


          
    if ($value1=="l")
           {
               
    $link_anzahl=$link_anzahl+1;
               echo  
    "&lt;LINK&gt; $value<br>";
           }


      } 
    Nicht schön aber selten, sicher gibt es ne möglichkeit mit weniger Quellcode das hinzukriegen.
    Kann mir einer von euch sagen wie ?!

    Danke...

    snoova

  • #2
    prob2:
    PHP-Code:
    while($irgendwat){
       if(
    is_dir($node)){
         
    $dirs .= $node."<br>";
       }else if(
    is_file($node)){
         
    $files .= $node."<br>";
       }
    }
    echo 
    $dirs.$files

    (so in etwa ...)

    prob1:

    habe ich leider nicht so recht verstanden. geht's einen tick genauer?


    beebob

    Kommentar


    • #3
      Hallo beebob,

      danke für die Antwort.

      also zum ersten Problem nochmal

      Das ist der String.
      -rw-rw-rw- 1 user group 976655 Jan 21 1999 Dateinname mit Leerzeichen.zip
      und das ist die zweite Variante, in der der String vorkommen kann

      -rw-rw-rw- 1 user group 1477924 Apr 11 10:28 Dateinname mit Leerzeichen.zip


      "Dateinname mit Leerzeichen.zip 976655 21.Jan.1999" heissen

      bis jetzt hab ich es geschafft, mit Hilfe von eregi den Ausgangsstring so zu ersetzen, dass er mir das Datum ausgibt. Dieses klappt aber nur wenn die Jahreszahl mit angegeben ist.
      Ein weiteres Problem ist, dass er beim eregi probleme kriegt wenn die Dateigrösse auch nur eine 4stellige Zahl ist (also gleich dem Jahresformat des Datums

      ich weiss ... es hilft dir vielleicht nicht weiter, aber es lässt sich scheisse erklären.

      thx
      snoova

      Kommentar


      • #4
        dann machen wir's ganz dumm:
        PHP-Code:
        $a=explode(" ",$str)
        $cnt=count($a);
        for(
        $i=0,$i<$cnt;$i++){
               
        // ab hier setzt du dein ereg für jedes einzelne
               // feld des arrays z.b. um zu testen, ob's eine uhrzeit ist:
              
        if(ereg("[0-9]\\:[0-9]",$a[$i]))
                echo 
        $a[$i];

        das ereg kann ich leider nicht testen, aber das dürfte nicht das problem sein. wichtig ist, dass du jetzt nicht mehr den ganzen string durchforsten musst ...


        beebob
        Zuletzt geändert von beebob; 19.08.2002, 13:33.

        Kommentar


        • #5
          ach ja, wg. des datums:
          da musst du dann die leerzeichen zählen, bis das datum losgeht. mit der obigen methode mergst du dann die mit leerzeichen separierten datumsangaben mit nem punkt.

          PHP-Code:

          for($i=0;$i<$cnt;$i++){
                if(
          $i>|| $i<7)
                    
          $date .= ".".$a[$i];

          so über den daumen gepeilt
          Zuletzt geändert von beebob; 19.08.2002, 15:08.

          Kommentar


          • #6
            Danke ... werd es testen und mich morgen melden....

            bis dann

            snoova

            Kommentar

            Lädt...
            X