bahamut100, Wenn dies die richtige Antwort ist, sollten Sie sie akzeptieren, indem Sie auf das weiße Häkchen daneben klicken.
– Mike Sherow
16. Februar 10 um 13:56 Uhr
@bahamut100, gerne geschehen. Obwohl ich mich für die Antwort von Alex entscheiden (und akzeptieren) würde.
– Bart Kiers
16. Februar 10 um 13:59 Uhr
Es wird nicht übergeben: http:/ /foobar.com/path/path#fragment/fragment
– ddimitrow
16. Februar 2010 um 14:11 Uhr
@ddimitrov: Ja, guter Punkt. Umso mehr Grund für das OP, sich für die Lösung von Alex zu entscheiden. Kann meine Antwort jedoch nicht entfernen, da es die akzeptierte Antwort ist …
– Bart Kiers
16. Februar 10 um 14:24 Uhr
Fragmente sind nicht wirklich ein Problem, da sie nicht auf den Server übertragen werden. Eine URL wie diese wäre jedoch ein Problem: http://www.example.com/dir1/dir2/foo?redirect=http://anothersite.com/default.aspx
– eis
26. November 12 um 21:46 Uhr
Alex
Versuche dies:
function getLastPathSegment($url) {
$path = parse_url($url, PHP_URL_PATH); // to get the path from a whole URL
$pathTrimmed = trim($path, "https://stackoverflow.com/"); // normalise with no leading or trailing slash
$pathTokens = explode("https://stackoverflow.com/", $pathTrimmed); // get segments delimited by a slash
if (substr($path, -1) !== "https://stackoverflow.com/") {
array_pop($pathTokens);
}
return end($pathTokens); // get the last segment
}
echo getLastPathSegment($_SERVER['REQUEST_URI']);
Ich habe es auch mit ein paar URLs aus den Kommentaren getestet. Ich muss davon ausgehen, dass alle Pfade mit einem Schrägstrich enden, da ich nicht erkennen kann, ob /bob ein Verzeichnis oder eine Datei ist. Dies wird davon ausgehen, dass es sich um eine Datei handelt, es sei denn, sie hat auch einen nachgestellten Schrägstrich.
+1 Für die Verwendung parse_url um nur den URL-Pfad zu erhalten. Aber das musst du mit machen $_SERVER['REQUEST_URI'] sowie.
– Gumbo
16. Februar 10 um 13:59 Uhr
ich dachte $_SERVER['REQUEST_URI'] kam immer wieder mit something/like/this ?
– Alex
16. Februar 10 um 14:03 Uhr
@alex: Nein, in PHP enthält es auch die Abfrage. Also URL-Pfad und URL-Abfrage (wie in der HTTP-Request-Zeile).
– Gumbo
16. Februar 10 um 14:13 Uhr
@gumbo Danke für den Tipp, ich habe auch einen Funktionswrapper dafür erstellt.
– Alex
16. Februar 10 um 14:19 Uhr
in etwa so: /bla/wce/news.php würde es nicht zurückkehren news.php anstatt wce wie der OP wollte? Sollte es nicht das vorletzte Element anstelle von end() zurückgeben? Ich habe das nicht wirklich getestet, da es eine PHP-Version >= 5.1.2 erfordert, also cmiiw.
– Andik
16. Februar 10 um 15:24 Uhr
Stepan Suworow
es ist leicht
<?php
echo basename(dirname($url)); // if your url/path includes a file
echo basename($url); // if your url/path does not include a file
?>
basename gibt die nachgestellte nachgestellte Namenskomponente von path zurück
dirname gibt den Pfad des übergeordneten Verzeichnisses zurück
hätte vorher eine Filterung der URL gebrauchen können. Wird an so etwas scheitern http://www.example.com/dir1/dir2/foo?redirect=http://anothersite.com/default.aspx
– Andik
19. Februar 10 um 3:21 Uhr
Ich habe es einfach mit basename() gelöst, auf deine Art habe ich das zweite Level in “retro” erhalten
Dies ist nur die halbe Lösung, und reine Code-Antworten sind bei Stackoverflow von geringem Wert.
– mickmackusa
22. Dezember 19 um 1:30 Uhr
@mickmackusa Nun, du bist ungefähr 10 Jahre zu spät zur Party. Nützliches Feedback.
– Gabe
6. Januar 20 um 22:35 Uhr
Ich diskriminiere mein Ehrenamt nicht nach Zeit. Alte Posts mit geringem Wert werden von neuen Besuchern gelesen und fördern neue Posts mit geringem Wert. Ich möchte, dass sich dieser Ort ständig verbessert – egal wie alt der Inhalt ist. Bitte etwas über diesen Beitrag.
Dies ist nur die halbe Lösung, und reine Code-Antworten sind bei Stackoverflow von geringem Wert.
– mickmackusa
22. Dezember 19 um 1:30 Uhr
@mickmackusa Nun, du bist ungefähr 10 Jahre zu spät zur Party. Nützliches Feedback.
– Gabe
6. Januar 20 um 22:35 Uhr
Ich diskriminiere mein Ehrenamt nicht nach Zeit. Alte Posts mit geringem Wert werden von neuen Besuchern gelesen und fördern neue Posts mit geringem Wert. Ich möchte, dass sich dieser Ort ständig verbessert – egal wie alt der Inhalt ist. Bitte etwas über diesen Beitrag.
– mickmackusa
6. Januar 2020 um 22:39 Uhr
Tim Cooper
Wenn Sie eine absolute URL verarbeiten möchten, können Sie verwenden parse_url() (es funktioniert nicht mit relativen URLs).