mit php einen teil-string mit wildcards auslesen und vergleichen zum sortieren

  • hi an alle!


    das problem ist das ich aus einen array in dem dateinamen sind und in den dateinamen sind die erscheinungsjahre in klammern enthalten. beispiel: movie1 (2000).mp4

    ich habe versucht mit "mb_strpos" (multibyte wegen UTF-8 für deutsche umlaute) die position auszulesen, da die dateinamen ja unterschiedlich lang sind.

    also das erscheiningsjahr aus einem variabel langen dateinamen auslesen und mit einem anderen vergleichen (die vier zahlen in der klammer).


    also das ziel ist das der früher erschienende film zuerst angezeigt wird.

    beispiel zum verständnis:

    anzeige jetzt durch alphabetische sortierung:


    Datei: movie4 (2017).mp4

    Datei: movie5 (2014).mp4


    ziel nach der sortierung:


    Datei: movie5 (2014).mp4

    Datei: movie4 (2017).mp4



    Code
    foreach ($verzeichnis1 as $element1)
        {
        // nach Erscheinungsjahr sortieren
        $jahr = "(????)";
        $pos = mb_strpos($element1, $jahr);
        echo "$pos<br>\n";

    ist nur ein auszug aus den php-script.

    $pos anzeigenlassen ist nur ein test, ob es funktioniert.

    es sollte am ende so ähnlich sein wie die ersten buchstaben aus aus einem anderen array zu suchen und zu vergleichen - da liegt dann noch ein anderes problem, aber dafür mach ich dann einen neuen thread auf.

    Code
    // ersten Buchstaben des Verzeichnisses auslesen und Großschreiben
      $buchstabe = mb_strtoupper(mb_substr($element, 0, 1));
      // Vergleich, ob die Anfangsbuchstaben ungleich sind
      if (!mb_strstr($buchstabe_alt,$buchstabe))
        {
        $buchstabe_alt .= $buchstabe;
        echo "<br>\n";
        echo "<strong>$buchstabe</strong><br>\n";
        }

    auch nur ein auszug


    wenn der ganze teil gewünscht wird kann ich den nachlegen.


    irgendwie tue ich mich schwer dem script das mit den wildcards schmackhaft zu machen. ;):wallbash:


    vielen dank für jede zielführende hilfe im voraus.:danke_ATDE:

    die wahrheit will keiner hören oder lesen.

    Edited once, last by scorpionesc9999 ().

  • Ist PHP ein KO Kriterium? Wenn ja kann ich leider nicht helfen

    ja ist inh den php-script und die dateinamen sind in einem array die in einem php-script sind.


    wie würde den deine idee aussehen, vielleicht hilft mir das beim denken oder ideen finden, aber bitte kein java

    die wahrheit will keiner hören oder lesen.

  • Code
    def extract_year(name):
        beginn = name.find("(")
        ende = name.find(")")
        year = name[beginn+1:ende]
        return int(year)
    
    filme = ["movie1 (2015)", "movie4 (2017)", "movie5 (2014)"]
    filme.sort(key=extract_year)
    print(filme)
    Code
    >>> ['movie5 (2014)', 'movie1 (2015)', 'movie4 (2017)']

    Vielleicht hilfts dir ja weiter

  • Code
    def extract_year(name):
        beginn = name.find("(")
        ende = name.find(")")
        year = name[beginn+1:ende]
        return int(year)
    
    filme = ["movie1 (2015)", "movie4 (2017)", "movie5 (2014)"]
    filme.sort(key=extract_year)
    print(filme)
    Code
    >>> ['movie5 (2014)', 'movie1 (2015)', 'movie4 (2017)']

    Vielleicht hilfts dir ja weiter

    danke für deine hilfe

    ich hab ne php lösung gefunden.

    einfach und einzeilig


    Code
    $jahr = (mb_substr($element1, -9, 4));
        echo "$jahr<br>\n";

    das spuckt genau die vier zahlen der jahreszahl aus, der trick ist mit negativen zahlen von hinten an zu zählen den die datei endung ist immer gleich.

    das "echo" ist nur zum sehen, ob es funktioniert.

    die wahrheit will keiner hören oder lesen.