Funktion gesucht
Florian
- php
0 Dennis0 Julian von Mendel0 wahsaga
0 DG2 Ashura
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 ;-) )?
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.
Danke!
Läuft!
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
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
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
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
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
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/
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