webentwicklung-frage-antwort-db.com.de

Holen Sie sich das letzte Wort von der URL nach einem Schrägstrich PHP

Ich muss das letzte Wort von einer URL erhalten. Ich habe zum Beispiel die folgende URL:

http://www.mydomainname.com/m/groups/view/test

Ich brauche mit PHP nur "test", sonst nichts. Ich habe versucht, so etwas zu verwenden:

$words = explode(' ', $_SERVER['REQUEST_URI']);
$showword = trim($words[count($words) - 1], '/');
echo $showword;

Bei mir funktioniert das nicht. Kannst du mir bitte helfen?

Ich danke dir sehr!!

14
DiegoP.

mit Regex:

preg_match("/[^\/]+$/", "http://www.mydomainname.com/m/groups/view/test", $matches);
$last_Word = $matches[0]; // test
19
fardjad

Verwenden Sie basename mit parse_url:

echo basename(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH));
36
sanjary

Ich habe das benutzt:

$lastWord = substr($url, strrpos($url, '/') + 1);

Thnx an: https://stackoverflow.com/a/1361752/4189000

3

Sie können explode verwenden, müssen jedoch / als Trennzeichen verwenden:

$segments = explode('/', $_SERVER['REQUEST_URI']);

Beachten Sie, dass $_SERVER['REQUEST_URI'] die Abfragezeichenfolge enthalten kann, wenn der aktuelle URI eine enthält. In diesem Fall sollten Sie zuvor parse_url verwenden, um nur den Pfad zu erhalten:

$_SERVER['REQUEST_URI_PATH'] = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);

Um nachstehende Schrägstriche zu berücksichtigen, können Sie sie mit rtrim entfernen, bevor Sie sie mit explode in ihre Segmente aufteilen. So:

$_SERVER['REQUEST_URI_PATH'] = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
$segments = explode('/', rtrim($_SERVER['REQUEST_URI_PATH'], '/'));
2
Gumbo

Dazu können Sie explode in Ihrem REQUEST_URI verwenden. Ich habe einige einfache Funktionen erstellt:

function getLast()
{
    $requestUri = $_SERVER['REQUEST_URI'];

   # Remove query string
    $requestUri = trim(strstr($requestUri, '?', true), '/');
   # Note that delimeter is '/'
    $arr = explode('/', $requestUri);
    $count = count($arr);

    return $arr[$count - 1];
}

echo getLast();
1
Robik

Wenn Sie nichts dagegen haben, dass eine Abfragezeichenfolge vorhanden ist, verwenden Sie einfach basename. Sie müssen auch nicht parse_url verwenden.

$url = 'http://www.mydomainname.com/m/groups/view/test';
$showword = basename($url);
echo htmlspecialchars($showword);

Wenn die Variable $url aus Benutzereingaben oder aus $_SERVER['REQUEST_URI'] generiert wird; Bevor Sie echo verwenden, verwenden Sie htmlspecialchars oder htmlentities. Andernfalls können Benutzer html-Tags hinzufügen oder JavaScript auf der Webseite ausführen.

0
Dan Bray

benutze preg *

if ( preg_match( "~/(.*?)$~msi", $_SERVER[ "REQUEST_URI" ], $vv ))
 echo $vv[1];
else
 echo "Nothing here";

das war nur eine Idee von Code. Es kann in der Funktion neu geschrieben werden.

PS. Im Allgemeinen verwende ich mod_rewrite , um diesen Prozess in php mit den $ _GET-Variablen abzuwickeln. Und das ist eine gute Praxis, IMHO

0
publikz.com