Get only filename from url in php without any variable values which exist in the url

PhpUrlGetFilenames

Php Problem Overview


I want to get filename without any $_GET variable values from a URL in php?

My URL is http://learner.com/learningphp.php?lid=1348

I only want to retrieve the learningphp.php from the URL?

How to do this?

I used basename() function but it gives all the variable values also: learntolearn.php?lid=1348 which are in the URL.

Php Solutions


Solution 1 - Php

This should work:

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

But beware of any malicious parts in your URL.

Solution 2 - Php

Following steps shows total information about how to get file, file with extension, file without extension. This technique is very helpful for me. Hope it will be helpful to you too.

  $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

Solution 3 - Php

Is better to use parse_url to retrieve only the path, and then getting only the filename with the basename. This way we also avoid query parameters.

<?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);

?>

Is somewhat similar to Sultan answer excepting that I'm using component parse_url parameter, to obtain only the path.

Solution 4 - Php

Use parse_url() as Pekka said:

<?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

In this example the optional username and password aren't output!

Solution 5 - Php

Your URL:

$url = 'http://learner.com/learningphp.php?lid=1348';
$file_name = basename(parse_url($url, PHP_URL_PATH));
echo $file_name;

output: learningphp.php

Solution 6 - Php

You can use,

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

echo $directoryURI;

Solution 7 - Php

An other way to get only the filename without querystring is by using parse_url and basename functions :

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

Solution 8 - Php

$filename = pathinfo( parse_url( $url, PHP_URL_PATH ), PATHINFO_FILENAME ); 

Use parse_url to extract the path from the URL, then pathinfo returns the filename from the path

Solution 9 - Php

Try the following code:

For PHP 5.4.0 and above:

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

For PHP Version < 5.4.0

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

Solution 10 - Php

The answer there assumes you know that the URL is coming from a request, which it may very well not be. The generalized answer would be something like:

$basenameWithoutParameters = explode('?', pathinfo($yourURL, PATHINFO_BASENAME))[0];

Here it just takes the base path, and splits out and ignores anything ? and after.

Solution 11 - Php

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

Solution 12 - Php

Use this function:

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

Solution 13 - Php

May be i am late

$e = explode("?",basename($_SERVER['REQUEST_URI']));
$filename = $e[0];

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionsqlchildView Question on Stackoverflow
Solution 1 - PhpstrView Answer on Stackoverflow
Solution 2 - PhpKhadka PushpendraView Answer on Stackoverflow
Solution 3 - PhpfoxtrotView Answer on Stackoverflow
Solution 4 - PhpComFreekView Answer on Stackoverflow
Solution 5 - PhpUdhav SarvaiyaView Answer on Stackoverflow
Solution 6 - PhpSwRView Answer on Stackoverflow
Solution 7 - PhpᴄʀᴏᴢᴇᴛView Answer on Stackoverflow
Solution 8 - PhpJamesView Answer on Stackoverflow
Solution 9 - PhpSultanView Answer on Stackoverflow
Solution 10 - PhpJeremy L.View Answer on Stackoverflow
Solution 11 - PhpMobView Answer on Stackoverflow
Solution 12 - PhpKonstantin XFlash StratigenasView Answer on Stackoverflow
Solution 13 - PhpRachit VoheraView Answer on Stackoverflow