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.
Cela devrait fonctionner:
echo basename($_SERVER['REQUEST_URI'], '?' . $_SERVER['QUERY_STRING']);
Mais méfiez-vous des éléments malveillants dans votre URL.
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;
?>
Dans cet exemple, le nom d'utilisateur et le mot de passe facultatifs ne sont pas affichés!
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
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 component
parse_url
, pour obtenir uniquement le chemin.
Vous pouvez utiliser,
$directoryURI =basename($_SERVER['SCRIPT_NAME']);
echo $directoryURI;
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'
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']);
$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
$url = "learner.com/learningphp.php?lid=1348";
$l = parse_url($url);
print_r(stristr($l['path'], "/"));
Utilisez cette fonction:
function getScriptName()
{
$filename = baseName($_SERVER['REQUEST_URI']);
$ipos = strpos($filename, "?");
if ( !($ipos === false) ) $filename = substr($filename, 0, $ipos);
return $filename;
}