Ergebnis 1 bis 4 von 4

Thema: Dateinamen mit '...(2)...' sortieren

  1. #1
    TP-Senior Avatar von Whiteflash
    Registriert seit
    May 2008
    Ort
    Wangen
    Beiträge
    130

    Dateinamen mit '...(2)...' sortieren

    Hallo Forum,

    ich sitze an einem Problem, das ich nicht hinbekomme. Ich habe einen Array mit einer Dateiliste, in der auch gleichlautende Dateien vorkommen, die dann zur Unterscheidung nach dem Namen ein '...(2)' oder '...(3)' angehängt bekommen. Ich will diese Liste nun sortieren lassen, und zwar so, wie ich die Liste auch erstellen würde, nämlich mit:
    1) dateiname.endung
    2) dateiname(2).endung
    3) dateiname(3).endung

    Wie geht das? natsort kapiert nicht was ich will, da kommt die Liste immer so raus:
    1) dateiname(2).endung
    2) dateiname(3).endung
    3) dateiname.endung

    Ich probier auch schon mit einer cmp-Funktion für usort rum, die sieht im Moment so aus:
    PHP-Code:
    function cmp($a$b) {
        if (
    $a == $b) {
            return 
    0;
        }
        if ((
    preg_match("#.*\([0-9]{1,}\).*#"$a)) && (preg_match("#.*\([0-9]{1,}\).*#"$b))) {
            return (
    strcmp($a$b) > 0) ? +: -1;
        }
        elseif (
    preg_match("#.*\([0-9]{1,}\).*#"$b)) {
            return +
    1;
        }
        elseif (
    preg_match("#.*\([0-9]{1,}\).*#"$a)) {
            return -
    1;
        }
        return (
    strcmp($a$b) > 0) ? +: -1;

    aber das reist es auch nicht raus. Hat jemand einen Tipp für mich? Das MUSS doch irgendwie gehen?

    Liebe Grüße,

    Basti
    live long and prosper...

  2. #2
    TP-Moderator Avatar von Cybergreek
    Registriert seit
    Nov 2005
    Ort
    Köln
    Beiträge
    1.666
    Mal ein ganz anderer Ansatz (keine Ahnung, ob der gut geht):

    - Du ersetzt vor dem Sortieren "(" durch ".("
    - sortiert dann normal
    - Du ersetzt nach dem Sortieren ".(" durch "("
    Grüße vom Griechen,
    Cybergreek!

    everygain Translator - eine Firefox-Erweiterung, damit der Grieche Euch besser versteht

  3. #3
    TP-Senior Avatar von Whiteflash
    Registriert seit
    May 2008
    Ort
    Wangen
    Beiträge
    130
    Hallo Cybergreek,

    zu deinem Ansatz: nein, tut er nicht. Leider . Ich habe mir aber in der Zwischenzeit anders weitergeholfen und das gute alte "Bubblesort" hergenommen, das dem ein oder anderen vielleicht aus VBA bekannt sein dürfte - damit geht's . Falls es jemand hilft:
    live long and prosper...

  4. #4
    TP-Senior Avatar von Whiteflash
    Registriert seit
    May 2008
    Ort
    Wangen
    Beiträge
    130
    ...hmpf, fehlt ja noch was. He, Moment - wo ist der PHP-editor in dem Antwortenfenster jetzt? bin ich doof ...?

    PHP-Code:
    protected function SortArray($arrArray$Mode) {
            
    $tmpArray = Array();
            ....
            }
            elseif (
    $Mode == "bubblesort") {
                Do { 
    /*Solange durch den Array loopen, bis keine "exchanges" mehr gemacht werden müssen*/
                    
    $NoExchanges True;
                    For (
    $i=0;$i<(count($arrArray) - 2);$i++) { /*Jedes - bis auf das letzte - Element durchlaufen*/
                        #Wenn das Element größer als das folgende
                        #ist, die beiden miteinander tauschen
                        
    if ((is_string($arrArray[$i]) && is_string($arrArray[$i 1]))) {
                            
    $comp strcmp($arrArray[$i], $arrArray[$i 1]);
                        }
                        else {
                            if (
    $arrArray[$i] > $arrArray[$i 1]) {
                                
    $comp = -1;
                            }
                            elseif (
    $arrArray[$i] < $arrArray[$i 1]) {
                                
    $comp 1;
                            }
                            else {
                                
    $comp 0;
                            }
                        
                        }
                        If (
    $comp 0) {
                            
    $NoExchanges False;
                            
    $Temp $arrArray[$i];
                            
    $arrArray[$i] = $arrArray[$i 1];
                            
    $arrArray[$i 1] = $Temp;
                        }
                    }
                } While (!
    $NoExchanges);
                return 
    $arrArray;
            }
            ...
        } 
    So, das wär's dann
    live long and prosper...

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. Datumsabhängige Dateinamen
    Von rebecca_r im Forum Javascript & Ajax
    Antworten: 0
    Letzter Beitrag: 16.11.2007, 11:07
  2. Dateinamen mit Umlauten etc.
    Von Eneri im Forum Betriebssysteme
    Antworten: 7
    Letzter Beitrag: 13.09.2006, 07:11
  3. Dateinamen auslesen
    Von jpj im Forum Dreamweaver & andere Webeditoren
    Antworten: 0
    Letzter Beitrag: 18.07.2005, 20:25
  4. Standards für Dateinamen
    Von klaudius im Forum Webdesign allgemein
    Antworten: 4
    Letzter Beitrag: 29.09.2003, 18:52
  5. dateinamen ändern
    Von jph im Forum Traum-Dynamik
    Antworten: 7
    Letzter Beitrag: 05.05.2003, 17:23

Stichworte

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51