Je dois obtenir le dernier mot d'une URL. Ainsi, par exemple, j'ai l'URL suivante:
http://www.mydomainname.com/m/groups/view/test
Il me faut obtenir avec PHP uniquement "test", rien d'autre. J'ai essayé d'utiliser quelque chose comme ça:
$words = explode(' ', $_SERVER['REQUEST_URI']);
$showword = trim($words[count($words) - 1], '/');
echo $showword;
Ca ne marche pas pour moi Pouvez-vous m'aider s'il vous plaît?
Merci beaucoup!!
en utilisant regex:
preg_match("/[^\/]+$/", "http://www.mydomainname.com/m/groups/view/test", $matches);
$last_Word = $matches[0]; // test
Utilisez basename avec parse_url:
echo basename(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH));
J'ai utilisé ceci:
$lastWord = substr($url, strrpos($url, '/') + 1);
Vous pouvez utiliser explode
mais vous devez utiliser /
comme délimiteur:
$segments = explode('/', $_SERVER['REQUEST_URI']);
Notez que $_SERVER['REQUEST_URI']
peut contenir la chaîne de requête si l'URI actuel en a une. Dans ce cas, vous devez utiliser parse_url
before pour obtenir uniquement le chemin:
$_SERVER['REQUEST_URI_PATH'] = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
Et pour prendre en compte les barres obliques de fin, vous pouvez utiliser rtrim
pour les supprimer avant de les scinder en segments en utilisant explode
. Alors:
$_SERVER['REQUEST_URI_PATH'] = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
$segments = explode('/', rtrim($_SERVER['REQUEST_URI_PATH'], '/'));
Pour ce faire, vous pouvez utiliser explode
sur votre REQUEST_URI
. J'ai créé une fonction simple:
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();
Si la présence d'une chaîne de requête lorsqu'elle est présente ne vous gêne pas, utilisez simplement basename
. Vous n'avez pas non plus besoin d'utiliser parse_url
.
$url = 'http://www.mydomainname.com/m/groups/view/test';
$showword = basename($url);
echo htmlspecialchars($showword);
Lorsque la variable $url
est générée à partir d'une entrée utilisateur ou à partir de $_SERVER['REQUEST_URI']
; avant d'utiliser echo
, utilisez htmlspecialchars
ou htmlentities
, sinon les utilisateurs pourraient ajouter des balises html
ou exécuter JavaScript
sur la page Web.
utiliser preg *
if ( preg_match( "~/(.*?)$~msi", $_SERVER[ "REQUEST_URI" ], $vv ))
echo $vv[1];
else
echo "Nothing here";
c'était juste une idée de code. Il peut être réécrit en fonction.
PS Généralement, j'utilise mod_rewrite pour gérer cela ... et traite en php les variables $ _GET. Et ceci est une bonne pratique, à mon humble avis