Rolf: Variable parsen

Hallo,

eine Variable kann folgende Werte annehmen:

<?php  
$PT = array(  
1=>'./',  
2=>'./Berge/',  
3=>'./Himmel/an0173.jpg',  
4=>'./Wald/',  
);  
foreach($PT as $path) {  
    echo $nr.'. '.dirname($path)."\n";  
}  
?>

erzeugt:
1. .
2. .
3. ./Himmel
4. .
gebraucht wird jedoch:
1. .
2. ./Berge
3. ./Himmel
4. ./Wald
Dazu suche ich eine möglichst einfache Lösung.

mbG Rolf

  1. Hallo!

    eine Variable kann folgende Werte annehmen:
    ...
    gebraucht wird jedoch:

    1. .
    2. ./Berge
    3. ./Himmel
    4. ./Wald

    Warum verwendest du dann dirname?

    Mach doch einfach:

    <?php  
    $PT = array(  
    1=>'./',  
    2=>'./Berge/',  
    3=>'./Himmel/an0173.jpg',  
    4=>'./Wald/',  
    );  
    foreach($PT as $nr => $path) {  
        echo $nr.'. '.$path."\n";  
    }  
    ?>
    
    --
    LG,
    Snafu
    1. Grüße,

      Warum verwendest du dann dirname?

      etl wegen

      3=>'./Himmel/an0173.jpg',

      spätestens hier würde man dirname() brauchen^^

      MFG
      bleicher

      --
      __________________________-
      Menschen an sich , sind nicht schlecht - es sind nur ihre Taten (c).
      Lieber bereuen gesündigt zu haben, als nicht sündigen und es später trotzdem bereuen.
      Boccaccio
    2. äh blödsinn..
      Seh jetzt was du wolltest.
      So würds gehen, geht aber wahrscheinlich einfacher.

      <?php  
      $PT = array(  
      1=>'./',  
      2=>'./Berge/',  
      3=>'./Himmel/an0173.jpg',  
      4=>'./Wald/',  
      );  
      foreach($PT as $nr => $path) {  
          $path = explode("/", $path );  
          array_pop($path);  
          $path = implode("/", $path)."/";  
          echo $nr.'. '.$path."<br />\n";  
      }  
      ?>
      
      --
      LG,
      Snafu
      1. Ich seh wieder den Wald vor lauter Bäumen nicht:

          
            $path = substr($path, 0, strrpos($path, "/"));
        
        --
        LG,
        Snafu
  2. Grüße,

    foreach($PT as $path) {
        echo $nr.'. '.dirname($path)."\n";
    }
    ?>

    hast du es ohne den 2en "/" am ende an den dirnamen im array versucht?

    MFG
    bleicher

    --
    __________________________-
    Menschen an sich , sind nicht schlecht - es sind nur ihre Taten (c).
    Lieber bereuen gesündigt zu haben, als nicht sündigen und es später trotzdem bereuen.
    Boccaccio
  3. Hi Rolf,

    ich würde es so machen:

      
    foreach($PT as $path) {  
        echo $nr.'. '.(substr ($path, 0, strpos ($path, '/', strpos($path, '/'))));  
    }  
    
    

    Ist allerdings ungetestet, vielleicht ist ne minimale Anpassung nötig.
    Gruß
    Franz

  4. Hallo,

    habe es zwischenzeitlich wie folgt gelöst:

    <?php  
    function myDirName($path) {  
        return (filetype($path) == 'dir') ? $path : dirname($path).'/';  
    }  
      
    $PT = array(  
    1=>'./',  
    2=>'./Berge/',  
    3=>'./Himmel/IP0988.jpg',  
    4=>'./Wald/',  
    );  
    foreach($PT as $nr => $path) {  
        echo $nr.'. '.myDirName($path)."\n";  
    }  
    ?>
    

    Grund ist, dass man opendir() nicht auf Dateinamen anwenden kann.
    Bislang bin ich davon ausgegangen, dass PHP intelligenter an die
    Sache herangeht, als einfach das letzte Element zu entfernen.

    mbG Rolf