web-dev-qa-db-fra.com

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

Je veux obtenir un nom de fichier sans valeur de variable $ _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 ça? S'il vous plaît aider.

J'ai utilisé le nom de base mais il donne toutes les valeurs de variable aussi-learntolearn.php?lid=1348 qui sont dans l'url.

33
sqlchild

Cela devrait fonctionner:

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

Mais méfiez-vous des éléments malveillants dans votre URL.

47
str

Utilisez parse_url() comme disait 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!

18
ComFreek

Les étapes suivantes affichent des informations complètes sur la façon d’obtenir un fichier, fichier avec extension, fichier sans extension. Cette technique est très utile pour moi. 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
15
Khadka Pushpendra

Il vaut mieux utiliser parse_url pour récupérer uniquement le chemin, puis obtenir uniquement le nom du fichier avec la variable basename. De cette façon, nous évitons également les paramètres de requête.

<?php
$url = 'http://www.example.com/image.jpg?q=6574&t=987'
$path = parse_url($url, PHP_URL_PATH);
echo basename($path);
?>

Est un peu similaire à Sultan answer sauf que j'utilise le paramètre componentparse_url, pour obtenir uniquement le chemin. 

8
foxtrot

Vous pouvez utiliser,

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

echo $directoryURI;
5
SwR

Une autre façon d'obtenir uniquement le nom de fichier sans chaîne de requête consiste à utiliser les fonctions parse_url et basename:

$parts = parse_url("http://example.com/foo/bar/baz/file.php?a=b&c=d");
$filename = basename($parts["path"]); // this will return 'file.php'
2
ᴄʀᴏᴢᴇᴛ

Essayez le code suivant:

Pour PHP 5.4.0 et versions ultérieures:

$filename = basename(parse_url('http://learner.com/learningphp.php?lid=1348')['path']);

Pour PHP Version <5.4.0

$parsed = parse_url('http://learner.com/learningphp.php?lid=1348');
$filename = basename($parsed['path']);
2
Sultan
$filename = pathinfo( parse_url( $url, PHP_URL_PATH ), PATHINFO_FILENAME ); 

Utilisez parse_url pour extraire le chemin de l'URL, puis pathinfo renvoie le nom du fichier à partir du chemin

1
James
$url = "learner.com/learningphp.php?lid=1348";
$l = parse_url($url);
print_r(stristr($l['path'], "/"));
1
Mob

Utilisez cette fonction:

function getScriptName()
{
    $filename = baseName($_SERVER['REQUEST_URI']);
    $ipos = strpos($filename, "?");
    if ( !($ipos === false) )   $filename = substr($filename, 0, $ipos);
    return $filename;
}