Florian: Funktion gesucht

Hallo an alle PHPler,

kennt jemand eine Funktion/weiß einen guten Lösungsweg, wie man aus dem String "/verz1/verz2/verz3/" das letzte Glied entfernen kann?
Also immer das "/letztes_vez/"...
Der Backslash am Ende des Eingabestrings soll optional sein, der in der Ausgabe soll einen erhalten.
Das das ein Pfad ist, ist eigentlich egal, ich will nichts auslesen sondern einfach nur "das letzte wegbekomen", um auf 1 Ebene höher zu verlinken.

Mein Ansatz:

  
<?php  
function ebene_hoeher($str)  
{  
   $str=preg_replace("|(.+)/(.+)/|si", "$1/$2", $str);  
   return $str;  
}  
?>  

Problem ist nur, dass ich mit diesem Suchmuster einfach nur den letzten Slash entferne.
Was mache ich falsch?
Gibt es auch eine andere Möglichkeit als die mit Suchmustern (die ich kaum beherrsche ;-) )?

  1. Hi Florian,

    Gibt es auch eine andere Möglichkeit als die mit Suchmustern (die ich kaum beherrsche ;-) )?

    Man kann das auch einfach mit einfachen String-Funktionen realisieren, wie ich es in der Funktion dir_up() aus der Library dir_functions.lib.php mache.

    MfG, Dennis.

    --
    Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:| mo:} zu:|
    Patch zur Verwendung von PATHINFO in JLog
    Die besten Dinge im Leben sind nicht die, die man für Geld bekommt. (Albert Einstein)
    1. Danke!
      Läuft!

    2. gudn tach!

      Man kann das auch einfach mit einfachen String-Funktionen realisieren, wie ich es in der Funktion dir_up() aus der Library dir_functions.lib.php mache.

      wobei ich die funktion dieser lib nicht empfehle. das ist sooo viel code fuer nur sooo wenig ergebnis. mal davon abgesehen, dass Ashuras loesung wohl nicht zu toppen ist, ist der in der verlinkten lib verwendete code imho zu lang und langsam.

      prost
      seth

  2. Hi,

    verwende explode um die einzelnen Teile in ein Array zu übernehmen, entferne den letzten mit array_slice und füge das Array wieder mit implode zusammen.

    Schöne Grüße
    Julian

    1. hi,

      verwende explode um die einzelnen Teile in ein Array zu übernehmen,

      Da das Trennzeichen / optional auch am Anfang und Ende des Strings auftauchen dürfen soll, bekämst du damit als erstes und letztes Element des Arrays ein leeres Element.

      entferne den letzten mit array_slice und füge das Array wieder mit implode zusammen.

      Damit käme für das genannte Beispiel dann "/verz1/verz2/verz3" heraus.

      gruß,
      wahsaga

      --
      /voodoo.css:
      #GeorgeWBush { position:absolute; bottom:-6ft; }
      1. Hallo,

        Da das Trennzeichen / optional auch am Anfang und Ende des Strings auftauchen dürfen soll, bekämst du damit als erstes und letztes Element des Arrays ein leeres Element.

        Was spricht dann gegen ein davor geschaltete Abfrage, ob das letzte Zeichen der Zeichenkette das "/" ist?

        Beste Grüße

      2. Hi,

        verwende explode um die einzelnen Teile in ein Array zu übernehmen,

        Da das Trennzeichen / optional auch am Anfang und Ende des Strings auftauchen dürfen soll, bekämst du damit als erstes und letztes Element des Arrays ein leeres Element.

        entferne den letzten mit array_slice und füge das Array wieder mit implode zusammen.

        Damit käme für das genannte Beispiel dann "/verz1/verz2/verz3" heraus.

        du hast Recht. Ashuras Lösung ist einfach die klügste.

        Schöne Grüße
        Julian

  3. Gibt es auch eine andere Möglichkeit als die mit Suchmustern (die ich kaum beherrsche ;-) )?

    Man kann doch einfach ../ verwenden.

    verz1/verz2/verz3/

    mit ../ kommst du nach /verz1/verz2/

  4. Hallo Florian.

    kennt jemand eine Funktion/weiß einen guten Lösungsweg, wie man aus dem String "/verz1/verz2/verz3/" das letzte Glied entfernen kann?
    Also immer das "/letztes_vez/"...

    Mit dirname.

    Einen schönen Mittwoch noch.

    Gruß, Ashura

    --
    sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
    „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
    [HTML Design Constraints: Logical Markup]