62 votes

Obtenir uniquement le nom de fichier de l'url en php sans aucune valeur de variable qui existe dans l'url

Je veux obtenir le nom de fichier sans aucune $_GET à partir d'une URL en php ?

Mon URL est http://learner.com/learningphp.php?lid=1348

Je veux seulement récupérer le learningphp.php de l'URL ?

Comment faire cela ?

J'ai utilisé la fonction basename() mais elle donne également toutes les valeurs des variables : learntolearn.php?lid=1348 qui sont dans l'URL.

81voto

str Points 2352

Cela devrait fonctionner :

 echo basename($_SERVER['REQUEST_URI'], '?' . $_SERVER['QUERY_STRING']);

Mais méfiez-vous des parties malveillantes de votre URL.

37voto

Les étapes suivantes montrent des informations totales sur la façon d'obtenir un fichier, un fichier avec extension, un fichier sans extension. Cette technique m'est très utile. J'espère que cela vous sera utile aussi.

   $url = 'https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_120x44dp.png';
        $file = file_get_contents($url); // to get file
        $name = basename($url); // to get file name
        $ext = pathinfo($url, PATHINFO_EXTENSION); // to get extension
        $name2 =pathinfo($url, PATHINFO_FILENAME); //file name without extension

32voto

foxtrot Points 183

Il est préférable d'utiliser parse_url pour récupérer uniquement le chemin, puis d'obtenir uniquement le nom de fichier avec le basename . De cette façon, nous évitons également les paramètres de requête.

 <?php

// url to inspect
$url = 'http://www.example.com/image.jpg?q=6574&t=987';

// parsed path
$path = parse_url($url, PHP_URL_PATH);

// extracted basename
echo basename($path);

?>

Est quelque peu similaire à la réponse de Sultan, sauf que j'utilise le component parse_url , pour obtenir uniquement le chemin.

22voto

ComFreek Points 14185

Utilisez parse_url() comme l'a dit Pekka :

 <?php
$url = 'http://www.example.com/search.php?arg1=arg2';

$parts = parse_url($url);

$str = $parts['scheme'].'://'.$parts['host'].$parts['path'];

echo $str;
?>

http://codepad.org/NBBf4yTB

Dans cet exemple, le nom d'utilisateur et le mot de passe facultatifs ne sont pas affichés !

10voto

Swetha swetha Points 57

Vous pouvez utiliser,

 $directoryURI =basename($_SERVER['SCRIPT_NAME']);

echo $directoryURI;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X